From e88cc743b7695b6aef4021587f92365c89a81db5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 18:44:22 +0800 Subject: [PATCH 001/355] docs: updated CHANGELOG.md (#1448) Signed-off-by: GitHub Signed-off-by: GitHub Co-authored-by: kemingy --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 576d0c127..538bc4ccd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## v0.3.10 (2023-01-25) + + * [efdd05f](https://github.com/tensorchord/envd/commit/efdd05f5219c92a5cbae14a57fb55199535b9cd4) fix: rm remote cache for v1 (#1447) + * [f940354](https://github.com/tensorchord/envd/commit/f9403540e1efe08b8512a728f9cd0eb3232dfb76) feat: add shm size to start options (#1445) + * [b0320cb](https://github.com/tensorchord/envd/commit/b0320cb2b5f82bc164210c2995caa4ca8dbf50a2) chore(deps): bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#1442) + * [0a2d9af](https://github.com/tensorchord/envd/commit/0a2d9af669c2b6d8128fc1b83087f05e88b4d70e) chore(deps): bump golang.org/x/crypto from 0.2.0 to 0.5.0 (#1443) + * [34c3150](https://github.com/tensorchord/envd/commit/34c3150db5e23dcc25b3270c396c0b1e62a0ab74) chore(deps): bump pypa/cibuildwheel from 2.11.4 to 2.12.0 (#1438) + * [83c63c7](https://github.com/tensorchord/envd/commit/83c63c7dbce98cd2db53fc317a5366d78ecb5bfd) fix: pip install requirements.txt (#1434) + * [f47f7a3](https://github.com/tensorchord/envd/commit/f47f7a353cd84dc03f577116bac33090ab8f0eac) doc: add init and daemon debug guide (#1435) + * [b6d49c6](https://github.com/tensorchord/envd/commit/b6d49c64290e32b4c92be009f40371b296899573) feat: add `make` as a default system package (#1433) + * [686d029](https://github.com/tensorchord/envd/commit/686d0295b36b4b8227c65b8e8aee60bd062006f6) fix: Add docker auth (#1432) + * [2d03de9](https://github.com/tensorchord/envd/commit/2d03de9872610b1177f63b613c0f38d36a9eed19) feat: :sparkles: init nerdctl support (#1378) + +### Contributors + + * Ce Gao + * Keming + * Wei Zhang + * dependabot[bot] + ## v0.3.9 (2023-01-18) From ba63c8f29b688ecb6deccf0e5c9fa55875a296ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 25 Jan 2023 22:06:57 +0800 Subject: [PATCH 002/355] chore(deps): bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#1439) Bumps [github.com/spf13/viper](https://github.com/spf13/viper) from 1.14.0 to 1.15.0. - [Release notes](https://github.com/spf13/viper/releases) - [Commits](https://github.com/spf13/viper/compare/v1.14.0...v1.15.0) --- updated-dependencies: - dependency-name: github.com/spf13/viper dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 ++++++-------- go.sum | 35 ++++++++++++++++------------------- 2 files changed, 22 insertions(+), 27 deletions(-) diff --git a/go.mod b/go.mod index ca73088f2..e507d7c69 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/pkg/sftp v1.13.5 github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.0 - github.com/spf13/viper v1.14.0 + github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.1 github.com/tensorchord/envd-server v0.0.25 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea @@ -101,24 +101,23 @@ require ( github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect - github.com/magiconair/properties v1.8.6 // indirect + github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/sys/signal v0.7.0 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect - github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/spf13/afero v1.9.2 // indirect + github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/subosito/gotenv v1.4.1 // indirect + github.com/subosito/gotenv v1.4.2 // indirect github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect @@ -131,12 +130,11 @@ require ( golang.org/x/net v0.5.0 // indirect golang.org/x/sys v0.4.0 // indirect golang.org/x/text v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e // indirect - google.golang.org/grpc v1.50.1 // indirect + google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect + google.golang.org/grpc v1.52.0 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 0e48cc67a..f08b61c6f 100644 --- a/go.sum +++ b/go.sum @@ -18,15 +18,15 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.104.0 h1:gSmWO7DY1vOm0MVU6DNXM11BWHHsTUmsC5cv1fuW5X8= +cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= -cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= +cloud.google.com/go/compute v1.14.0 h1:hfm2+FfxVmnRlh6LpB7cg1ZNU+5edAHmW679JePztk0= +cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= @@ -409,8 +409,8 @@ github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= -github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= +github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -524,7 +524,6 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -579,8 +578,8 @@ github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= +github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= @@ -594,8 +593,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.14.0 h1:Rg7d3Lo706X9tHsJMUjdiwMpHB7W8WnSVOssIY+JElU= -github.com/spf13/viper v1.14.0/go.mod h1:WT//axPky3FdvXHzGw33dNdXXXfFQqmEalje+egj8As= +github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= +github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -609,8 +608,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= -github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= +github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/tensorchord/envd-server v0.0.25 h1:r9cthgOmhqJl7keetaAFp9h2s7BeHMf+05vMxENkx4w= github.com/tensorchord/envd-server v0.0.25/go.mod h1:BmXRR/nVGPCtjaTCe7QVH26R4T+FEKbxJa9LGa7o0GA= @@ -660,7 +659,7 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0 h1:n9b7AAdbQtQ0k9dm0Dm2/KUcUqtG8i2O15KzNaDze8c= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0/go.mod h1:LsankqVDx4W+RhZNA5uWarULII/MBhF5qwCYxTuyXjs= go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= @@ -1030,8 +1029,8 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e h1:S9GbmC1iCgvbLyAokVCwiO6tVIrU9Y7c5oMx1V/ki/Y= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef h1:uQ2vjV/sHTsWSqdKeLqmwitzgvjMl7o4IdtHwUDXSJY= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1055,8 +1054,8 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.50.1 h1:DS/BukOZWp8s6p4Dt/tOaJaTQyPyOoCcrjroHuCeLzY= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk= +google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1094,8 +1093,6 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 08f6975f2a62cbfa085b4dda0ad663bbc50eb5db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:34:41 +0800 Subject: [PATCH 003/355] chore(deps): bump dependabot/fetch-metadata from 1.3.5 to 1.3.6 (#1450) Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.3.5 to 1.3.6. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.3.5...v1.3.6) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-merge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 9d18fde17..17782aebd 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.3.5 + uses: dependabot/fetch-metadata@v1.3.6 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Approve PR From c781d854e659497fbeb4be65fc92baa8fa8195f1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 11:35:07 +0800 Subject: [PATCH 004/355] chore(deps): bump github.com/containerd/containerd from 1.6.14 to 1.6.16 (#1451) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.6.14 to 1.6.16. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.6.14...v1.6.16) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e507d7c69..f73dc70b2 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/charmbracelet/lipgloss v0.6.0 github.com/cockroachdb/errors v1.9.0 github.com/containerd/console v1.0.3 - github.com/containerd/containerd v1.6.14 + github.com/containerd/containerd v1.6.16 github.com/creack/pty v1.1.18 github.com/docker/docker v23.0.0-rc.1+incompatible github.com/docker/go-connections v0.4.0 diff --git a/go.sum b/go.sum index f08b61c6f..fa860bc83 100644 --- a/go.sum +++ b/go.sum @@ -125,8 +125,8 @@ github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARu github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.6.14 h1:W+d0AJKVG3ioTZZyQwcw1Y3vvo6ZDYzAcjDcY4tkgGI= -github.com/containerd/containerd v1.6.14/go.mod h1:U2NnBPIhzJDm59xF7xB2MMHnKtggpZ+phKg8o2TKj2c= +github.com/containerd/containerd v1.6.16 h1:0H5xH6ABsN7XTrxIAKxFpBkFCBtrZ/OSORhCpUnHjrc= +github.com/containerd/containerd v1.6.16/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= From a20aa01d35d5cf93cdc3513adfa321143175687e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 12:11:40 +0800 Subject: [PATCH 005/355] chore(deps): bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1453) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.25.0 to 1.26.0. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.25.0...v1.26.0) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f73dc70b2..865cfc540 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.7.0 - github.com/onsi/gomega v1.25.0 + github.com/onsi/gomega v1.26.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 github.com/pkg/sftp v1.13.5 diff --git a/go.sum b/go.sum index fa860bc83..99e19b223 100644 --- a/go.sum +++ b/go.sum @@ -501,8 +501,8 @@ github.com/onsi/ginkgo/v2 v2.7.0 h1:/XxtEV3I3Eif/HobnVx9YmJgk8ENdRsuUmM+fLCFNow= github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.25.0 h1:Vw7br2PCDYijJHSfBOWhov+8cAnUf8MfMaIOV323l6Y= -github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From 890b71228b788949cf4266ddeee90027461fadc8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 12:13:24 +0800 Subject: [PATCH 006/355] chore(deps): bump github.com/docker/cli from 23.0.0-rc.1+incompatible to 23.0.0-rc.3+incompatible (#1455) chore(deps): bump github.com/docker/cli Bumps [github.com/docker/cli](https://github.com/docker/cli) from 23.0.0-rc.1+incompatible to 23.0.0-rc.3+incompatible. - [Release notes](https://github.com/docker/cli/releases) - [Commits](https://github.com/docker/cli/compare/v23.0.0-rc.1...v23.0.0-rc.3) --- updated-dependencies: - dependency-name: github.com/docker/cli dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 865cfc540..9bcc71c32 100644 --- a/go.mod +++ b/go.mod @@ -76,7 +76,7 @@ require ( github.com/containerd/typeurl v1.0.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/cli v23.0.0-rc.1+incompatible + github.com/docker/cli v23.0.0-rc.3+incompatible github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect diff --git a/go.sum b/go.sum index 99e19b223..a5666e904 100644 --- a/go.sum +++ b/go.sum @@ -164,8 +164,8 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/cli v23.0.0-rc.1+incompatible h1:Vl3pcUK4/LFAD56Ys3BrqgAtuwpWd/IO3amuSL0ZbP0= -github.com/docker/cli v23.0.0-rc.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v23.0.0-rc.3+incompatible h1:OPrcUDrpApVrVZsZByISt51zID7HT0VxDKa/onvUzOo= +github.com/docker/cli v23.0.0-rc.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From 29ffd895601fad818d5625a03d3e9034d2103ec7 Mon Sep 17 00:00:00 2001 From: Jinjing Zhou Date: Mon, 30 Jan 2023 14:43:06 +0800 Subject: [PATCH 007/355] feat: support envd run in local docker context (#1428) * support graph serialize Signed-off-by: Jinjing.Zhou * fix get graph logic Signed-off-by: Jinjing.Zhou * fix buf Signed-off-by: Jinjing.Zhou * remove debug info Signed-off-by: Jinjing.Zhou * fix version info Signed-off-by: Jinjing.Zhou * fix Signed-off-by: Jinjing.Zhou * address comment Signed-off-by: Jinjing Zhou * fix info Signed-off-by: Jinjing Zhou * add Signed-off-by: Jinjing.Zhou --------- Signed-off-by: Jinjing.Zhou Signed-off-by: Jinjing Zhou --- pkg/app/run.go | 29 ++++++++++++++++++--- pkg/envd/docker.go | 52 +++++++++++++++++++++++++++++++++++-- pkg/lang/ir/graph.go | 5 ++++ pkg/lang/ir/v0/compile.go | 11 +++++++- pkg/lang/ir/v0/types.go | 5 ++-- pkg/lang/ir/v0/util.go | 28 ++++++++++++++++++++ pkg/lang/ir/v1/compile.go | 23 +++++++++++----- pkg/lang/ir/v1/types.go | 7 ++--- pkg/lang/ir/v1/util.go | 28 ++++++++++++++++++++ pkg/lang/version/version.go | 14 ++++++++++ pkg/types/label.go | 4 ++- 11 files changed, 187 insertions(+), 19 deletions(-) diff --git a/pkg/app/run.go b/pkg/app/run.go index 09705741c..15386949c 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -16,6 +16,7 @@ package app import ( "fmt" + "path/filepath" "strings" "time" @@ -69,6 +70,12 @@ var CommandCreate = &cli.Command{ Value: sshconfig.GetPrivateKeyOrPanic(), Hidden: true, }, + &cli.PathFlag{ + Name: "path", + Usage: "Working directory path to be used as project root", + Aliases: []string{"p"}, + Value: ".", + }, &cli.StringFlag{ Name: "host", Usage: "Assign the host address for environment ssh acesss server listening", @@ -94,6 +101,11 @@ var CommandCreate = &cli.Command{ Usage: "Request GPU resources (number of gpus), such as 1, 2", Value: "", }, + &cli.StringSliceFlag{ + Name: "volume", + Usage: "Mount host directory into container", + Aliases: []string{"v"}, + }, }, Action: run, } @@ -103,9 +115,6 @@ func run(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to get current context") } - if c.Runner == types.RunnerTypeDocker { - return errors.Newf("docker runner is not supported for this command, please use `envd up`") - } telemetry.GetReporter().Telemetry( "run", telemetry.AddField("runner", c.Runner)) @@ -132,7 +141,21 @@ func run(clicontext *cli.Context) error { } if c.Runner == types.RunnerTypeEnvdServer { opt.EnvdServerSource = &envd.EnvdServerSource{} + if len(clicontext.StringSlice("volume")) > 0 { + return errors.New("volume is not supported for envd-server runner") + } + } else if c.Runner == types.RunnerTypeDocker { + opt.DockerSource = &envd.DockerSource{ + MountOptions: clicontext.StringSlice("volume"), + } + + buildContext, err := filepath.Abs(clicontext.Path("path")) + if err != nil { + return errors.Wrap(err, "failed to get absolute path of the build context") + } + opt.BuildContext = buildContext } + res, err := engine.StartEnvd(clicontext.Context, opt) if err != nil { return err diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 0c4259b2d..86406271b 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -34,6 +34,7 @@ import ( envdconfig "github.com/tensorchord/envd/pkg/config" "github.com/tensorchord/envd/pkg/lang/ir" + "github.com/tensorchord/envd/pkg/lang/version" "github.com/tensorchord/envd/pkg/ssh" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" "github.com/tensorchord/envd/pkg/types" @@ -187,6 +188,35 @@ func (e dockerEngine) ListImageDependency(ctx context.Context, image string) (*t return dep, nil } +func (e dockerEngine) getVerFromImageLabel(ctx context.Context, env string) (version.Getter, error) { + ctr, err := e.GetImage(ctx, env) + if err != nil { + return nil, errors.Wrapf(err, "failed to inspect image: %s", env) + } + ver, ok := ctr.Labels[types.ImageLabelSyntaxVer] + if !ok { + return version.NewByVersion("v0"), nil + } + return version.NewByVersion(ver), nil +} + +func (e dockerEngine) listEnvGeneralGraph(ctx context.Context, env string, g ir.Graph) (ir.Graph, error) { + ctr, err := e.GetImage(ctx, env) + if err != nil { + return nil, errors.Wrapf(err, "failed to inspect image: %s", env) + } + code, ok := ctr.Labels[types.GeneralGraphCode] + if !ok { + return nil, errors.Newf("failed to get runtime graph label from image: %s", env) + } + logrus.WithField("env", env).Debugf("general graph: %s", code) + newg, err := g.GeneralGraphFromLabel([]byte(code)) + if err != nil { + return nil, errors.Wrapf(err, "failed to create runtime graph from the image: %s", env) + } + return newg, err +} + func (e dockerEngine) ListEnvRuntimeGraph(ctx context.Context, env string) (*ir.RuntimeGraph, error) { ctr, err := e.ContainerInspect(ctx, env) if err != nil { @@ -346,12 +376,30 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes base := fileutil.EnvdHomeDir(filepath.Base(so.BuildContext)) config.WorkingDir = base + var g ir.Graph + if so.Image == "" { + g = so.DockerSource.Graph + } else { + // Use specified image as the running image + getter, err := e.getVerFromImageLabel(ctx, so.Image) + if err != nil { + return nil, errors.Wrap(err, "failed to get the version from the image label") + } + defaultGraph := getter.GetDefaultGraph() + if err != nil { + return nil, errors.Wrap(err, "failed to get the graph from the image") + } + g, err = e.listEnvGeneralGraph(ctx, so.Image, defaultGraph) + if err != nil { + return nil, errors.Wrap(err, "failed to get the graph from the image") + } + so.DockerSource.Graph = g + } + if so.DockerSource == nil || so.DockerSource.Graph == nil { return nil, errors.New("failed to get the docker-specific options") } - g := so.DockerSource.Graph - mountOption := make([]mount.Mount, 0, len(so.DockerSource.MountOptions)+len(g.GetMount())+1) for _, option := range so.DockerSource.MountOptions { diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 15d4587ac..41f3c64db 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -27,6 +27,11 @@ type Graph interface { graphDebugger graphVisitor + graphSerializer +} + +type graphSerializer interface { + GeneralGraphFromLabel(label []byte) (Graph, error) } type graphDebugger interface { diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index fdea4af3f..04a6401d2 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -46,7 +46,8 @@ func NewGraph() ir.Graph { langVersion := languageVersionDefault conda := &ir.CondaConfig{} return &generalGraph{ - OS: osDefault, + OS: osDefault, + EnvdSyntaxVersion: "v0", Language: ir.Language{ Name: languageDefault, Version: &langVersion, @@ -136,6 +137,9 @@ func (g generalGraph) GPUEnabled() bool { func (g generalGraph) Labels() (map[string]string, error) { labels := make(map[string]string) + + labels[types.ImageLabelSyntaxVer] = g.EnvdSyntaxVersion + str, err := json.Marshal(g.SystemPackages) if err != nil { return nil, err @@ -166,6 +170,11 @@ func (g generalGraph) Labels() (map[string]string, error) { return labels, err } labels[types.RuntimeGraphCode] = code + code, err = g.Dump() + if err != nil { + return labels, err + } + labels[types.GeneralGraphCode] = code ports := []servertypes.EnvironmentPort{} ports = append(ports, servertypes.EnvironmentPort{ diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go index ce0db91ec..80a7b79a0 100644 --- a/pkg/lang/ir/v0/types.go +++ b/pkg/lang/ir/v0/types.go @@ -30,7 +30,8 @@ type generalGraph struct { OS string ir.Language - Image *string + EnvdSyntaxVersion string + Image *string Shell string CUDA *string @@ -69,7 +70,7 @@ type generalGraph struct { *ir.CondaConfig *ir.RStudioServerConfig - Writer compileui.Writer + Writer compileui.Writer `json:"-"` // EnvironmentName is the base name of the environment. // It is the BaseDir(BuildContextDir) // e.g. mnist, streamlit-mnist diff --git a/pkg/lang/ir/v0/util.go b/pkg/lang/ir/v0/util.go index 2339b6a44..266f3028b 100644 --- a/pkg/lang/ir/v0/util.go +++ b/pkg/lang/ir/v0/util.go @@ -19,6 +19,7 @@ import ( "crypto/md5" "encoding/gob" "encoding/hex" + "encoding/json" "os/user" "regexp" "strconv" @@ -29,6 +30,7 @@ import ( "github.com/spf13/viper" "github.com/tensorchord/envd/pkg/flag" + "github.com/tensorchord/envd/pkg/lang/ir" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -116,3 +118,29 @@ func GetDefaultGraphHash() string { hashD := md5.Sum(data) return hex.EncodeToString(hashD[:]) } + +func (g *generalGraph) Dump() (string, error) { + b, err := json.Marshal(g) + if err != nil { + return "", err + } + runtimeGraphCode := string(b) + return runtimeGraphCode, nil +} + +func (g *generalGraph) Load(code []byte) error { + err := json.Unmarshal(code, g) + if err != nil { + return errors.Wrap(err, "failed to unmarshal") + } + return nil +} + +func (g generalGraph) GeneralGraphFromLabel(label []byte) (ir.Graph, error) { + newg := generalGraph{} + err := newg.Load(label) + if err != nil { + return nil, err + } + return &newg, nil +} diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index d86dd57db..f04026eb3 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -41,13 +41,13 @@ func NewGraph() ir.Graph { RuntimeEnvPaths: []string{types.DefaultSystemPath}, } return &generalGraph{ - uid: -1, - gid: -1, - Image: defaultImage, - Language: ir.Language{}, - CUDA: nil, - CUDNN: CUDNNVersionDefault, - NumGPUs: 0, + uid: -1, + gid: -1, + Image: defaultImage, + CUDA: nil, + CUDNN: CUDNNVersionDefault, + NumGPUs: 0, + EnvdSyntaxVersion: "v1", PyPIPackages: [][]string{}, RPackages: [][]string{}, @@ -144,6 +144,9 @@ func (g generalGraph) GPUEnabled() bool { func (g generalGraph) Labels() (map[string]string, error) { labels := make(map[string]string) + + labels[types.ImageLabelSyntaxVer] = g.EnvdSyntaxVersion + str, err := json.Marshal(g.SystemPackages) if err != nil { return nil, err @@ -175,6 +178,12 @@ func (g generalGraph) Labels() (map[string]string, error) { } labels[types.RuntimeGraphCode] = code + code, err = g.Dump() + if err != nil { + return labels, err + } + labels[types.GeneralGraphCode] = code + ports := []servertypes.EnvironmentPort{} ports = append(ports, servertypes.EnvironmentPort{ Name: "ssh", diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index d74691476..225df201a 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -29,8 +29,9 @@ type generalGraph struct { gid int `default:"-1"` ir.Language - Image string - User string + EnvdSyntaxVersion string + Image string + User string Shell string Dev bool @@ -70,7 +71,7 @@ type generalGraph struct { *ir.CondaConfig *ir.RStudioServerConfig - Writer compileui.Writer + Writer compileui.Writer `json:"-"` // EnvironmentName is the base name of the environment. // It is the BaseDir(BuildContextDir) // e.g. mnist, streamlit-mnist diff --git a/pkg/lang/ir/v1/util.go b/pkg/lang/ir/v1/util.go index 5260ac30a..f78be2829 100644 --- a/pkg/lang/ir/v1/util.go +++ b/pkg/lang/ir/v1/util.go @@ -19,6 +19,7 @@ import ( "crypto/md5" "encoding/gob" "encoding/hex" + "encoding/json" "fmt" "os/user" "regexp" @@ -31,6 +32,7 @@ import ( "github.com/spf13/viper" "github.com/tensorchord/envd/pkg/flag" + "github.com/tensorchord/envd/pkg/lang/ir" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -143,3 +145,29 @@ func GetCUDAImage(image string, cuda *string, cudnn string, dev bool) string { return fmt.Sprintf("docker.io/nvidia/cuda:%s-cudnn%s-%s-%s", *cuda, cudnn, target, imageTag) } + +func (g *generalGraph) Dump() (string, error) { + b, err := json.Marshal(g) + if err != nil { + return "", err + } + runtimeGraphCode := string(b) + return runtimeGraphCode, nil +} + +func (g *generalGraph) Load(code []byte) error { + err := json.Unmarshal(code, g) + if err != nil { + return errors.Wrap(err, "failed to unmarshal") + } + return nil +} + +func (g generalGraph) GeneralGraphFromLabel(label []byte) (ir.Graph, error) { + newg := generalGraph{} + err := newg.Load(label) + if err != nil { + return nil, err + } + return &newg, nil +} diff --git a/pkg/lang/version/version.go b/pkg/lang/version/version.go index 6dba93803..a9af195e2 100644 --- a/pkg/lang/version/version.go +++ b/pkg/lang/version/version.go @@ -55,6 +55,20 @@ type generalGetter struct { v Version } +func NewByVersion(ver string) Getter { + g := &generalGetter{} + switch ver { + case string(V1): + g.v = V1 + case string(V0): + g.v = V0 + default: + logrus.Debug("unknown version, using v0 by default") + g.v = V0 + } + return g +} + // New returns a new version getter. func New(file string) (Getter, error) { f, err := os.Open(file) diff --git a/pkg/types/label.go b/pkg/types/label.go index 67d4d59e5..c0fd64a29 100644 --- a/pkg/types/label.go +++ b/pkg/types/label.go @@ -32,7 +32,9 @@ const ( ImageLabelCUDNN = "ai.tensorchord.envd.gpu.cudnn" ImageLabelContext = "ai.tensorchord.envd.build.context" ImageLabelCacheHash = "ai.tensorchord.envd.build.digest" - RuntimeGraphCode = "ai.tensorchord.envd.runtimeGraph" + ImageLabelSyntaxVer = "ai.tensorchord.envd.syntax.version" + RuntimeGraphCode = "ai.tensorchord.envd.graph.runtime" + GeneralGraphCode = "ai.tensorchord.envd.graph.general" ImageVendorEnvd = "envd" ) From 2ae200bf51339b1ddb0b4474ee5b6d1c9deb459a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Jan 2023 15:03:18 +0800 Subject: [PATCH 008/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.7.1 (#1454) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.7.0 to 2.7.1. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.7.0...v2.7.1) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 9bcc71c32..28c300597 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.7.0 + github.com/onsi/ginkgo/v2 v2.7.1 github.com/onsi/gomega v1.26.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 diff --git a/go.sum b/go.sum index a5666e904..84fa8c58e 100644 --- a/go.sum +++ b/go.sum @@ -497,8 +497,8 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/ginkgo/v2 v2.7.0 h1:/XxtEV3I3Eif/HobnVx9YmJgk8ENdRsuUmM+fLCFNow= -github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.7.1 h1:YgLPk+gpqDtAPeRCWEmfO8oxE6ru3xcVSXAM7wn8w9I= +github.com/onsi/ginkgo/v2 v2.7.1/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= From b9f20a4bfa28bf4bf0cb4ae90c3ba95e5ef23bb1 Mon Sep 17 00:00:00 2001 From: Kaiyang Chen <48289729+Kaiyang-Chen@users.noreply.github.com> Date: Tue, 31 Jan 2023 22:05:08 -0600 Subject: [PATCH 009/355] feat: separate starship installation by using fixed image (#1424) * feat: separate starship installation by using fixed image Signed-off-by: Kaiyang-Chen * feat: add starship dockerfile Signed-off-by: Kaiyang-Chen * feat: change starship dockerfile to multi-stage build to reduce size Signed-off-by: Kaiyang-Chen * feat: change starship dockerfile base build image to scratch to reduce size Signed-off-by: Kaiyang-Chen * feat: seperate starship installation in frontend v0 Signed-off-by: Kaiyang-Chen * feat: add ci for starship image release Signed-off-by: Kaiyang-Chen * fix: change ci action to docker/build-push Signed-off-by: Kaiyang-Chen --------- Signed-off-by: Kaiyang-Chen --- .github/workflows/envd-starship.yaml | 37 +++++++++++++++++++ .../envd-starship/envd-starship.Dockerfile | 6 +++ pkg/lang/ir/v0/system.go | 12 +++++- pkg/lang/ir/v1/compile.go | 3 +- pkg/lang/ir/v1/system.go | 9 ++++- pkg/types/envd.go | 3 +- 6 files changed, 65 insertions(+), 5 deletions(-) create mode 100644 .github/workflows/envd-starship.yaml create mode 100644 base-images/envd-starship/envd-starship.Dockerfile diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml new file mode 100644 index 000000000..4e1a19c76 --- /dev/null +++ b/.github/workflows/envd-starship.yaml @@ -0,0 +1,37 @@ +name: release + +on: + release: + types: [created] + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +jobs: + + docker: + name: Push starship image to Docker Hub + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Docker Login + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERIO_USERNAME }} + password: ${{ secrets.DOCKERIO_TOKEN }} + - name: Docker Setup QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Build and push + uses: docker/build-push-action@v3 + with: + push: true + file: base-images/envd-starship/envd-starship.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: tensorchord/starship:v0.0.1 + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/base-images/envd-starship/envd-starship.Dockerfile b/base-images/envd-starship/envd-starship.Dockerfile new file mode 100644 index 000000000..d478b47dd --- /dev/null +++ b/base-images/envd-starship/envd-starship.Dockerfile @@ -0,0 +1,6 @@ +FROM curlimages/curl:7.87.0 as builder +USER root +RUN curl --proto '=https' --tlsv1.2 -sSf https://starship.rs/install.sh | sh -s -- -y + +FROM scratch as prod +COPY --from=builder /usr/local/bin/starship /usr/local/bin/starship \ No newline at end of file diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 98df4da62..96aab5c21 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -157,7 +157,6 @@ func (g *generalGraph) preparePythonBase(root llb.State) llb.State { sb.WriteString(strings.Join(types.BaseAptPackage, " ")) sb.WriteString("&& rm -rf /var/lib/apt/lists/* ") // shell prompt - sb.WriteString("&& curl --proto '=https' --tlsv1.2 -sSf https://starship.rs/install.sh | sh -s -- -y") sb.WriteString("&& locale-gen en_US.UTF-8") run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), @@ -174,6 +173,14 @@ func (g generalGraph) compileSSHD(root llb.State) llb.State { return sshd } +func (g generalGraph) compileStarship(root llb.State) llb.State { + starship := root.File(llb.Copy( + llb.Image(types.EnvdStarshipImage), "/usr/local/bin/starship", "/usr/local/bin/starship", + &llb.CopyInfo{CreateDestPath: true}), + llb.WithCustomName(fmt.Sprintf("[internal] add envd-starship from %s", types.EnvdStarshipImage))) + return starship +} + func (g *generalGraph) compileBase() (llb.State, error) { logger := logrus.WithFields(logrus.Fields{ "os": g.OS, @@ -217,7 +224,8 @@ func (g *generalGraph) compileBase() (llb.State, error) { condaStage := g.installConda(base) supervisor := g.installHorust(condaStage) sshdStage := g.compileSSHD(supervisor) - source, err := g.compileExtraSource(sshdStage) + starshipStage := g.compileStarship(sshdStage) + source, err := g.compileExtraSource(starshipStage) if err != nil { return llb.State{}, errors.Wrap(err, "failed to get extra sources") } diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index f04026eb3..24ba17552 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -292,7 +292,8 @@ func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { dev := g.compileDevPackages(base) sshd := g.compileSSHD(dev) horust := g.installHorust(sshd) - userGroup := g.compileUserGroup(horust) + starship := g.compileStarship(horust) + userGroup := g.compileUserGroup(starship) base = userGroup } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 12488569d..8e33d164d 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -281,7 +281,6 @@ func (g *generalGraph) compileDevPackages(root llb.State) llb.State { sb.WriteString(strings.Join(types.BaseAptPackage, " ")) sb.WriteString("&& rm -rf /var/lib/apt/lists/* ") // shell prompt - sb.WriteString("&& curl --proto '=https' --tlsv1.2 -sSf https://starship.rs/install.sh | sh -s -- -y") sb.WriteString("&& locale-gen en_US.UTF-8") run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), @@ -290,6 +289,14 @@ func (g *generalGraph) compileDevPackages(root llb.State) llb.State { return run.Root() } +func (g generalGraph) compileStarship(root llb.State) llb.State { + starship := root.File(llb.Copy( + llb.Image(types.EnvdStarshipImage), "/usr/local/bin/starship", "/usr/local/bin/starship", + &llb.CopyInfo{CreateDestPath: true}), + llb.WithCustomName(fmt.Sprintf("[internal] add envd-starship from %s", types.EnvdStarshipImage))) + return starship +} + func (g generalGraph) compileSSHD(root llb.State) llb.State { sshd := root.File(llb.Copy( llb.Image(types.EnvdSshdImage), "/usr/bin/envd-sshd", "/var/envd/bin/envd-sshd", diff --git a/pkg/types/envd.go b/pkg/types/envd.go index c7e38fa0a..c41155ee6 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -33,7 +33,8 @@ const ( DefaultCondaPath = "/opt/conda/envs/envd/bin:/opt/conda/bin:/home/envd/.local/bin" DefaultJuliaPath = "/usr/local/julia/bin" // image - PythonBaseImage = "ubuntu:20.04" + PythonBaseImage = "ubuntu:20.04" + EnvdStarshipImage = "tensorchord/starship:v0.0.1" // supervisor HorustImage = "tensorchord/horust:v0.2.1" HorustServiceDir = "/etc/horust/services" From dc5cbfa9ba7e100b8828dfc47310169ddb5dbdb7 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Wed, 1 Feb 2023 12:42:07 +0800 Subject: [PATCH 010/355] docs: add Kaiyang-Chen as a contributor for code (#1456) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 13 +++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index f993e31fe..9bb44269a 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -601,6 +601,15 @@ "contributions": [ "code" ] + }, + { + "login": "Kaiyang-Chen", + "name": "Kaiyang Chen", + "avatar_url": "https://avatars.githubusercontent.com/u/48289729?v=4", + "profile": "https://github.com/Kaiyang-Chen", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 42cbb5524..f0fe6667e 100644 --- a/README.md +++ b/README.md @@ -294,57 +294,58 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Jian Zeng
Jian Zeng

🎨 🤔 🔬 Jinjing Zhou
Jinjing Zhou

🐛 💻 🎨 📖 Jun
Jun

📦 💻 + Kaiyang Chen
Kaiyang Chen

💻 Keming
Keming

💻 📖 🤔 🚇 Kevin Su
Kevin Su

💻 Ling Jin
Ling Jin

🐛 🚇 - Manjusaka
Manjusaka

💻 + Manjusaka
Manjusaka

💻 Nino
Nino

🎨 💻 Pengyu Wang
Pengyu Wang

📖 Sepush
Sepush

📖 Siyuan Wang
Siyuan Wang

💻 🚇 🚧 Suyan
Suyan

📖 To My
To My

📖 - Tumushimire Yves
Tumushimire Yves

💻 + Tumushimire Yves
Tumushimire Yves

💻 Wei Zhang
Wei Zhang

💻 Weixiao Huang
Weixiao Huang

💻 Weizhen Wang
Weizhen Wang

💻 XRW
XRW

💻 Xu Jin
Xu Jin

💻 Xuanwo
Xuanwo

💬 🎨 🤔 👀 - Yijiang Liu
Yijiang Liu

💻 + Yijiang Liu
Yijiang Liu

💻 Yilong Li
Yilong Li

📖 🐛 💻 Yuan Tang
Yuan Tang

💻 🎨 📖 🤔 Yuchen Cheng
Yuchen Cheng

🐛 🚇 🚧 🔧 Yuedong Wu
Yuedong Wu

💻 Yunchuan Zheng
Yunchuan Zheng

💻 Zheming Li
Zheming Li

💻 - Zhenguo.Li
Zhenguo.Li

💻 📖 + Zhenguo.Li
Zhenguo.Li

💻 📖 Zhenzhen Zhao
Zhenzhen Zhao

🚇 📓 💻 Zhizhen He
Zhizhen He

💻 📖 cutecutecat
cutecutecat

💻 dqhl76
dqhl76

📖 💻 jimoosciuc
jimoosciuc

📓 kenwoodjw
kenwoodjw

💻 - li mengyang
li mengyang

💻 + li mengyang
li mengyang

💻 nullday
nullday

🤔 💻 rrain7
rrain7

💻 tison
tison

💻 wangxiaolei
wangxiaolei

💻 wyq
wyq

🐛 🎨 💻 x0oo0x
x0oo0x

💻 - xiangtianyu
xiangtianyu

📖 + xiangtianyu
xiangtianyu

📖 xieydd
xieydd

💻 xing0821
xing0821

🤔 📓 💻 xxchan
xxchan

📖 From 89383b5bba5229e9cb133515b69a1eccdd0331da Mon Sep 17 00:00:00 2001 From: Keming Date: Wed, 1 Feb 2023 20:41:07 +0800 Subject: [PATCH 011/355] fix: rm redundant ForwardAgent config in ssh config (#1458) Signed-off-by: Keming --- pkg/ssh/config/entry.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/ssh/config/entry.go b/pkg/ssh/config/entry.go index 2aaa2d4c3..3f4074c79 100644 --- a/pkg/ssh/config/entry.go +++ b/pkg/ssh/config/entry.go @@ -62,7 +62,6 @@ func add(path string, eo EntryOptions) error { host := newHost([]string{eo.Name}, []string{"entry generated by envd"}) host.params = []*param{ - newParam(forwardAgentKeyword, []string{"yes"}, nil), newParam(pubkeyAcceptedKeyTypesKeyword, []string{"+ssh-rsa"}, nil), newParam(hostKeyAlgorithms, []string{"+ssh-rsa"}, nil), newParam(hostNameKeyword, []string{eo.IFace}, nil), From 410c164fd3bdedeeef1a8d6e08f830d174b4935b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 09:50:13 +0800 Subject: [PATCH 012/355] docs: updated CHANGELOG.md (#1462) Signed-off-by: GitHub Co-authored-by: gaocegege --- CHANGELOG.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 538bc4ccd..b6f6fc521 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## v0.3.11 (2023-02-01) + + * [89383b5](https://github.com/tensorchord/envd/commit/89383b5bba5229e9cb133515b69a1eccdd0331da) fix: rm redundant ForwardAgent config in ssh config (#1458) + * [b9f20a4](https://github.com/tensorchord/envd/commit/b9f20a4bfa28bf4bf0cb4ae90c3ba95e5ef23bb1) feat: separate starship installation by using fixed image (#1424) + * [2ae200b](https://github.com/tensorchord/envd/commit/2ae200bf51339b1ddb0b4474ee5b6d1c9deb459a) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.7.1 (#1454) + * [29ffd89](https://github.com/tensorchord/envd/commit/29ffd895601fad818d5625a03d3e9034d2103ec7) feat: support envd run in local docker context (#1428) + * [890b712](https://github.com/tensorchord/envd/commit/890b71228b788949cf4266ddeee90027461fadc8) chore(deps): bump github.com/docker/cli from 23.0.0-rc.1+incompatible to 23.0.0-rc.3+incompatible (#1455) + * [a20aa01](https://github.com/tensorchord/envd/commit/a20aa01d35d5cf93cdc3513adfa321143175687e) chore(deps): bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1453) + * [c781d85](https://github.com/tensorchord/envd/commit/c781d854e659497fbeb4be65fc92baa8fa8195f1) chore(deps): bump github.com/containerd/containerd from 1.6.14 to 1.6.16 (#1451) + * [08f6975](https://github.com/tensorchord/envd/commit/08f6975f2a62cbfa085b4dda0ad663bbc50eb5db) chore(deps): bump dependabot/fetch-metadata from 1.3.5 to 1.3.6 (#1450) + * [ba63c8f](https://github.com/tensorchord/envd/commit/ba63c8f29b688ecb6deccf0e5c9fa55875a296ce) chore(deps): bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#1439) + +### Contributors + + * Jinjing Zhou + * Kaiyang Chen + * Keming + * dependabot[bot] + ## v0.3.10 (2023-01-25) * [efdd05f](https://github.com/tensorchord/envd/commit/efdd05f5219c92a5cbae14a57fb55199535b9cd4) fix: rm remote cache for v1 (#1447) From 4b3e7689fb87b0d0465b89565e7a870669895e6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 10:39:55 +0800 Subject: [PATCH 013/355] chore(deps): bump github.com/cockroachdb/errors from 1.9.0 to 1.9.1 (#1467) Bumps [github.com/cockroachdb/errors](https://github.com/cockroachdb/errors) from 1.9.0 to 1.9.1. - [Release notes](https://github.com/cockroachdb/errors/releases) - [Commits](https://github.com/cockroachdb/errors/compare/v1.9.0...v1.9.1) --- updated-dependencies: - dependency-name: github.com/cockroachdb/errors dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 43 +++---------------------------------------- 2 files changed, 4 insertions(+), 41 deletions(-) diff --git a/go.mod b/go.mod index 28c300597..10d373420 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.18 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/charmbracelet/lipgloss v0.6.0 - github.com/cockroachdb/errors v1.9.0 + github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 github.com/containerd/containerd v1.6.16 github.com/creack/pty v1.1.18 diff --git a/go.sum b/go.sum index 84fa8c58e..3778d45c9 100644 --- a/go.sum +++ b/go.sum @@ -46,12 +46,9 @@ github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOEl github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20170127035650-74b38d55f37a/go.mod h1:EFZQ978U7x8IRnstaskI3IysnWY5Ao3QgZUKOXlsAdw= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet v2.1.3-0.20180809161101-62edd43e4f88+incompatible/go.mod h1:HPYO+50pSWkPoj9Q/eq0aRGByCL6ScRlUmiEX5Zgm+w= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= -github.com/Joker/jade v1.0.1-0.20190614124447-d475f43051e7/go.mod h1:6E6s8o2AE4KhCrqr6GRJjdC/gNfTdxkIXvuGZZda2VM= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= @@ -104,18 +101,13 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v1.0.1-0.20211007161720-b558070c3be0/go.mod h1:5Ib8Meh+jk1RlHIXej6Pzevx/NLlNvQB9pmSBZErGA4= -github.com/cockroachdb/datadriven v1.0.1-0.20220214170620-9913f5bc19b7/go.mod h1:hi0MtSY3AYDQNDi83kDkMH5/yqM/CsIrsOITkSoH7KI= -github.com/cockroachdb/errors v1.6.1/go.mod h1:tm6FTP5G81vwJ5lC0SizQo374JNCOPrHyXGitRJoDqM= -github.com/cockroachdb/errors v1.8.8/go.mod h1:z6VnEL3hZ/2ONZEvG7S5Ym0bU2AqPcEKnIiA1wbsSu0= -github.com/cockroachdb/errors v1.9.0 h1:B48dYem5SlAY7iU8AKsgedb4gH6mo+bDkbtLIvM/a88= -github.com/cockroachdb/errors v1.9.0/go.mod h1:vaNcEYYqbIqB5JhKBhFV9CneUqeuEbB2OYJBK4GBNYQ= -github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= +github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74= github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/cockroachdb/sentry-go v0.6.1-cockroachdb.2/go.mod h1:8BT+cPK6xvFOcRlk0R8eg+OTkcqI6baNH4xAkpiYVvQ= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= @@ -162,7 +154,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/cli v23.0.0-rc.3+incompatible h1:OPrcUDrpApVrVZsZByISt51zID7HT0VxDKa/onvUzOo= github.com/docker/cli v23.0.0-rc.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= @@ -193,12 +184,10 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/flosch/pongo2 v0.0.0-20190707114632-bbf5a6c351f4/go.mod h1:T9YF2M40nIgbVgp3rreNmTged+9HrbNTIQf1PsaIiTA= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= @@ -328,7 +317,6 @@ github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= @@ -340,7 +328,6 @@ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hydrogen18/memlistener v0.0.0-20141126152155-54553eb933fb/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -352,7 +339,6 @@ github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/i18n v0.0.0-20171121225848-987a633949d0/go.mod h1:pMCz62A0xJL6I+umB2YTlFRwWXaDFA0jy+5HzGiJjqI= github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= @@ -365,17 +351,10 @@ github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/juju/errors v0.0.0-20181118221551-089d3ea4e4d5/go.mod h1:W54LbzXuIE0boCoNJfwqpmkKJ1O4TCTZMetAt6jGk7Q= -github.com/juju/loggo v0.0.0-20180524022052-584905176618/go.mod h1:vgyd7OREkbtVEN/8IXZe5Ooef3LQePvuBm9UWj6ZL8U= -github.com/juju/testing v0.0.0-20180920084828-472a3e8b2073/go.mod h1:63prj8cnj0tU0S9OHjGJn+b1h0ZghCndfnbQolrYTwA= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.0.1/go.mod h1:udK4vLQKkdDqMGJJVd/msuMtN6hpYJhg/lSzuxjhO+U= github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.10/go.mod h1:ZYmJC07hQPW67eKuzlfY7SO3bC0mw83A3j6im82hfqw= github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.0-20190103105442-ea782b38602d/go.mod h1:NV88laa9UiiDuX9AhMbDPkGYSPugBOV6yTZB1l2K9Z0= github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= @@ -384,7 +363,6 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= @@ -403,7 +381,6 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g= github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= @@ -435,8 +412,6 @@ github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/mediocregopher/mediocre-go-lib v0.0.0-20181029021733-cb65787f37ed/go.mod h1:dSsfyI2zABAdhcbvkXqgxOxrCsbYeHCPgrZkku60dSg= -github.com/mediocregopher/radix/v3 v3.3.0/go.mod h1:EmfVyvspXz1uZEyPBMyGK+kjWiKQGvsUt6O3Pj+LDCQ= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -480,9 +455,7 @@ github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ github.com/muesli/termenv v0.13.0 h1:wK20DRpJdDX8b7Ek2QfhvqhRQFZ237RGRO0RQ/Iqdy0= github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/nats.go v1.8.1/go.mod h1:BrFz9vVn0fU3AcH9Vn4Kd7W0NpJ651tD5omQ3M8LwxM= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.0.2/go.mod h1:dab7URMsZm6Z/jp9Z5UGa87Uutgc2mVpXLC4B7TDb/4= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= @@ -490,17 +463,13 @@ github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= github.com/onsi/ginkgo/v2 v2.7.1 h1:YgLPk+gpqDtAPeRCWEmfO8oxE6ru3xcVSXAM7wn8w9I= github.com/onsi/ginkgo/v2 v2.7.1/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= @@ -556,7 +525,6 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= @@ -760,7 +728,6 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -817,14 +784,11 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -840,7 +804,6 @@ golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= From 8413af8775cc9d59393abd5a2c1365f23deaa216 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 10:41:21 +0800 Subject: [PATCH 014/355] chore(deps): bump docker/build-push-action from 3 to 4 (#1463) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3 to 4. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v3...v4) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/envd-starship.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml index 4e1a19c76..9b911f351 100644 --- a/.github/workflows/envd-starship.yaml +++ b/.github/workflows/envd-starship.yaml @@ -27,7 +27,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: push: true file: base-images/envd-starship/envd-starship.Dockerfile From 8706aef34c0aa1f3afd17522199548825459495a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 11:50:29 +0800 Subject: [PATCH 015/355] chore(deps): bump github.com/urfave/cli/v2 from 2.24.1 to 2.24.3 (#1464) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.24.1 to 2.24.3. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.24.1...v2.24.3) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 10d373420..6c3baa58f 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/tensorchord/envd-server v0.0.25 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.24.1 + github.com/urfave/cli/v2 v2.24.3 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.5.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 3778d45c9..107004836 100644 --- a/go.sum +++ b/go.sum @@ -593,8 +593,8 @@ github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljT github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.24.1 h1:/QYYr7g0EhwXEML8jO+8OYt5trPnLHS0p3mrgExJ5NU= -github.com/urfave/cli/v2 v2.24.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.24.3 h1:7Q1w8VN8yE0MJEHP06bv89PjYsN4IHWED2s1v/Zlfm0= +github.com/urfave/cli/v2 v2.24.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From d9f8dfc8a36d7316dd6908e722418efed7fef17a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Feb 2023 12:05:06 +0800 Subject: [PATCH 016/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.7.1 to 2.8.0 (#1465) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.7.1 to 2.8.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.7.1...v2.8.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6c3baa58f..04ed7eb8f 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.7.1 + github.com/onsi/ginkgo/v2 v2.8.0 github.com/onsi/gomega v1.26.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 diff --git a/go.sum b/go.sum index 107004836..fb8b78759 100644 --- a/go.sum +++ b/go.sum @@ -467,8 +467,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.7.1 h1:YgLPk+gpqDtAPeRCWEmfO8oxE6ru3xcVSXAM7wn8w9I= -github.com/onsi/ginkgo/v2 v2.7.1/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU= +github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= +github.com/onsi/ginkgo/v2 v2.8.0/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= From 6fea644430e350200bcf004b36b501ab665c64ac Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Tue, 7 Feb 2023 19:15:22 +0800 Subject: [PATCH 017/355] chore: add unconvert to linters and address related issues (#1469) Signed-off-by: Zhizhen He --- .golangci.yml | 1 + pkg/driver/docker/docker.go | 3 +-- pkg/home/auth_test.go | 4 ++-- pkg/lang/ir/v0/compile.go | 2 +- pkg/lang/ir/v1/compile.go | 2 +- pkg/lang/ir/v1/julia.go | 2 +- pkg/lang/ir/v1/r.go | 4 ++-- pkg/progress/progressui/printer.go | 2 +- pkg/shell/zsh.go | 2 +- pkg/util/fileutil/namegenerator.go | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 59eb0cbb1..c0b8c75f4 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -14,6 +14,7 @@ linters: - sqlclosecheck - staticcheck - typecheck + - unconvert - unparam - unused linters-settings: diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index de6192c25..a564297f5 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -81,12 +81,11 @@ func NormalizeName(s string) (string, error) { } else { s = remoteName } - logrus.Warnf("The working direcotry's name is not lowercased: %s, the image built will be lowercased to %s", remoteName, s) + logrus.Warnf("The working directory's name is not lowercased: %s, the image built will be lowercased to %s", remoteName, s) } // remove the spaces s = strings.ReplaceAll(s, " ", "") return s, nil - } func (c dockerClient) ListImage(ctx context.Context) ([]types.ImageSummary, error) { diff --git a/pkg/home/auth_test.go b/pkg/home/auth_test.go index 464c795fe..9bff6ad87 100644 --- a/pkg/home/auth_test.go +++ b/pkg/home/auth_test.go @@ -23,10 +23,10 @@ import ( var _ = Describe("auth test", Ordered, func() { defaultAuthName := "auth_name" - deafultJWTToken := "default_token" + defaultJWTToken := "default_token" ac := types.AuthConfig{ Name: defaultAuthName, - JWTToken: deafultJWTToken, + JWTToken: defaultJWTToken, } BeforeEach(func() { diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index 04a6401d2..882ab0655 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -215,7 +215,7 @@ func (g generalGraph) Labels() (map[string]string, error) { } labels[types.ImageLabelRepo] = string(repoInfo) - labels[types.ImageLabelContainerName] = string(g.EnvironmentName) + labels[types.ImageLabelContainerName] = g.EnvironmentName return labels, nil } diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 24ba17552..29127b52f 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -223,7 +223,7 @@ func (g generalGraph) Labels() (map[string]string, error) { } labels[types.ImageLabelRepo] = string(repoInfo) - labels[types.ImageLabelContainerName] = string(g.EnvironmentName) + labels[types.ImageLabelContainerName] = g.EnvironmentName return labels, nil } diff --git a/pkg/lang/ir/v1/julia.go b/pkg/lang/ir/v1/julia.go index 3e3aff706..7a614980a 100644 --- a/pkg/lang/ir/v1/julia.go +++ b/pkg/lang/ir/v1/julia.go @@ -90,7 +90,7 @@ func (g *generalGraph) installJuliaPackages(root llb.State) llb.State { for _, packages := range g.JuliaPackages { command := fmt.Sprintf(`julia -e 'using Pkg; Pkg.add(["%s"])'`, strings.Join(packages, `","`)) run := root. - Run(llb.Shlex(command), llb.WithCustomNamef("[internal] installing Julia pacakges: %s", strings.Join(packages, " "))) + Run(llb.Shlex(command), llb.WithCustomNamef("[internal] installing Julia packages: %s", strings.Join(packages, " "))) root = run.Root() } diff --git a/pkg/lang/ir/v1/r.go b/pkg/lang/ir/v1/r.go index 223631bcd..5fa4e8f70 100644 --- a/pkg/lang/ir/v1/r.go +++ b/pkg/lang/ir/v1/r.go @@ -44,12 +44,12 @@ func (g generalGraph) installRPackages(root llb.State) llb.State { lib := "/usr/local/lib/R/site-library/" root = root. - Run(llb.Shlexf("chmod 777 %s", lib), llb.WithCustomNamef("[internal] setting execute permision for default R package library for envd users")).Root() + Run(llb.Shlexf("chmod 777 %s", lib), llb.WithCustomNamef("[internal] setting execute permission for default R package library for envd users")).Root() for _, packages := range g.RPackages { command := fmt.Sprintf(`R -e 'options(repos = "%s"); install.packages(c("%s"), lib = "%s")'`, mirrorURL, strings.Join(packages, `","`), lib) run := root. - Run(llb.Shlex(command), llb.WithCustomNamef("[internal] installing R pacakges: %s", strings.Join(packages, " "))) + Run(llb.Shlex(command), llb.WithCustomNamef("[internal] installing R packages: %s", strings.Join(packages, " "))) root = run.Root() } diff --git a/pkg/progress/progressui/printer.go b/pkg/progress/progressui/printer.go index f48c4900e..56669942a 100644 --- a/pkg/progress/progressui/printer.go +++ b/pkg/progress/progressui/printer.go @@ -157,7 +157,7 @@ func (p *textMux) printVtx(t *trace, dgst digest.Digest) { if i == 0 { l = l[v.logsOffset:] } - fmt.Fprintf(p.w, "%s", []byte(l)) + fmt.Fprintf(p.w, "%s", l) if i != len(v.logs)-1 || !v.logsPartial { fmt.Fprintln(p.w, "") } diff --git a/pkg/shell/zsh.go b/pkg/shell/zsh.go index 87a3a10e9..055543dfd 100644 --- a/pkg/shell/zsh.go +++ b/pkg/shell/zsh.go @@ -101,7 +101,7 @@ func (m generalManager) DownloadOrCache() (bool, error) { Name: "origin", URLs: []string{url}, Fetch: []config.RefSpec{ - config.RefSpec("+refs/heads/master:refs/remotes/origin/master"), + "+refs/heads/master:refs/remotes/origin/master", }, } cfg.Branches["master"] = &config.Branch{ diff --git a/pkg/util/fileutil/namegenerator.go b/pkg/util/fileutil/namegenerator.go index 04dcc7f12..be97321af 100644 --- a/pkg/util/fileutil/namegenerator.go +++ b/pkg/util/fileutil/namegenerator.go @@ -269,7 +269,7 @@ var ( // David Lee Chaum - American computer scientist and cryptographer. Known for his seminal contributions in the field of anonymous communication. https://en.wikipedia.org/wiki/David_Chaum "chaum", - // Pafnuty Chebyshev - Russian mathematician. He is known fo his works on probability, statistics, mechanics, analytical geometry and number theory https://en.wikipedia.org/wiki/Pafnuty_Chebyshev + // Pafnuty Chebyshev - Russian mathematician. He is known for his works on probability, statistics, mechanics, analytical geometry and number theory https://en.wikipedia.org/wiki/Pafnuty_Chebyshev "chebyshev", // Joan Clarke - Bletchley Park code breaker during the Second World War who pioneered techniques that remained top secret for decades. Also an accomplished numismatist https://en.wikipedia.org/wiki/Joan_Clarke From 23e4fa9a552aecab43566504f6c66ede5f57d6b2 Mon Sep 17 00:00:00 2001 From: Keming Date: Wed, 8 Feb 2023 13:48:42 +0800 Subject: [PATCH 018/355] feat: add progress bar for `envd up` and `envd run` (#1460) * feat: add progress bar for `envd up` and `envd run` Signed-off-by: Keming * fix lint Signed-off-by: Keming * ignore progressbar render err Signed-off-by: Keming * fix e2e test Signed-off-by: Keming * fix data race Signed-off-by: Keming * add lock for progressbar Signed-off-by: Keming --------- Signed-off-by: Keming --- go.mod | 8 +++-- go.sum | 9 ++++++ pkg/envd/docker.go | 9 ++++++ pkg/envd/envdserver.go | 5 ++++ pkg/envd/types.go | 66 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 04ed7eb8f..49ad5d0a2 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,11 @@ require ( golang.org/x/time v0.1.0 ) -require github.com/moby/patternmatcher v0.5.0 // indirect +require ( + github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect + github.com/moby/patternmatcher v0.5.0 // indirect + github.com/schollz/progressbar/v3 v3.13.0 // indirect +) require ( github.com/aymanbagabas/go-osc52 v1.0.3 // indirect @@ -59,7 +63,7 @@ require ( github.com/muesli/termenv v0.13.0 // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/pkg/errors v0.9.1 - github.com/rivo/uniseg v0.2.0 // indirect + github.com/rivo/uniseg v0.4.3 // indirect github.com/segmentio/backo-go v1.0.0 // indirect ) diff --git a/go.sum b/go.sum index fb8b78759..d5f8977f6 100644 --- a/go.sum +++ b/go.sum @@ -352,6 +352,8 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= +github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= +github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= @@ -414,6 +416,8 @@ github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= +github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= @@ -514,6 +518,8 @@ github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5 github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= +github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -525,6 +531,9 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= +github.com/schollz/progressbar/v3 v3.13.0 h1:9TeeWRcjW2qd05I8Kf9knPkW4vLM/hYoa6z9ABvxje8= +github.com/schollz/progressbar/v3 v3.13.0/go.mod h1:ZBYnSuLAX2LU8P8UiKN/KgF2DY58AJC8yfVYLPC8Ly4= +github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 86406271b..648e5108b 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -350,6 +350,11 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes "gpu": so.NumGPU, "build-context": so.BuildContext, }) + + bar := InitProgressBar(5) + defer bar.finish() + bar.updateTitle("configure the environment") + if so.NumGPU != 0 { nvruntimeExists, err := e.GPUEnabled(ctx) if err != nil { @@ -539,6 +544,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes }) logger.Debugf("starting %s container", so.EnvironmentName) + bar.updateTitle("create the environment") resp, err := e.ContainerCreate(ctx, config, hostConfig, nil, nil, so.EnvironmentName) if err != nil { return nil, errors.Wrap(err, "failed to create the container") @@ -548,6 +554,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes logger.Warnf("run with warnings: %s", w) } + bar.updateTitle("start the environment") if err := e.ContainerStart( ctx, resp.ID, dockertypes.ContainerStartOptions{}); err != nil { errCause := errors.UnwrapAll(err) @@ -564,11 +571,13 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes return nil, errors.Wrap(err, "failed to inspect the container") } + bar.updateTitle("wait for the environment to start") if err := e.WaitUntilRunning( ctx, container.Name, so.Timeout); err != nil { return nil, errors.Wrap(err, "failed to wait until the container is running") } + bar.updateTitle("attach the environment") result := &StartResult{ SSHPort: sshPortInHost, Address: container.NetworkSettings.IPAddress, diff --git a/pkg/envd/envdserver.go b/pkg/envd/envdserver.go index 0df9ff07e..12b69e44f 100644 --- a/pkg/envd/envdserver.go +++ b/pkg/envd/envdserver.go @@ -296,16 +296,21 @@ func (e *envdServerEngine) StartEnvd(ctx context.Context, so StartOptions) (*Sta } logrus.WithField("req", req).Debug("send request to create new env") + bar := InitProgressBar(3) + defer bar.finish() + bar.updateTitle("create environment") resp, err := e.EnvironmentCreate(ctx, req) if err != nil { return nil, errors.Wrap(err, "failed to create the environment") } + bar.updateTitle("wait for the remote environment to start") if err := e.WaitUntilRunning( ctx, resp.Created.Name, so.Timeout); err != nil { return nil, errors.Wrap(err, "failed to wait until the container is running") } + bar.updateTitle("attach to the remote environment") result := &StartResult{ SSHPort: 2222, Address: "", diff --git a/pkg/envd/types.go b/pkg/envd/types.go index 686d962b9..6fe5ddbad 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -15,8 +15,12 @@ package envd import ( + "fmt" + "sync" "time" + "github.com/schollz/progressbar/v3" + "github.com/sirupsen/logrus" "github.com/tensorchord/envd-server/api/types" "github.com/tensorchord/envd/pkg/lang/ir" @@ -65,3 +69,65 @@ type StartResult struct { Ports []types.EnvironmentPort } + +type ProgressBar struct { + bar *progressbar.ProgressBar + currStage int + totalStage int + notify chan struct{} + lock *sync.Mutex +} + +func InitProgressBar(stage int) *ProgressBar { + done := make(chan struct{}) + bar := progressbar.NewOptions(-1, + progressbar.OptionSpinnerType(11), + progressbar.OptionEnableColorCodes(true), + progressbar.OptionOnCompletion(func() { + fmt.Println() + }), + ) + var lock sync.Mutex + + go func() { + timer := time.NewTicker(time.Millisecond * 100) + for { + select { + case <-done: + return + case <-timer.C: + lock.Lock() + _ = bar.Add(1) + lock.Unlock() + } + } + }() + + b := ProgressBar{ + notify: done, + bar: bar, + totalStage: stage, + lock: &lock, + } + return &b +} + +func (b *ProgressBar) updateTitle(title string) { + b.lock.Lock() + defer b.lock.Unlock() + b.currStage += 1 + b.bar.Describe(fmt.Sprintf("[cyan][%d/%d][reset] %s", + b.currStage, + b.totalStage, + title, + )) +} + +func (b *ProgressBar) finish() { + b.lock.Lock() + defer b.lock.Unlock() + b.notify <- struct{}{} + if err := b.bar.Finish(); err != nil { + logrus.Infof("stop progress bar err: %v\n", err) + } +} From ae3a1e5680bffa214e22f0ef3d8a5b10b6be824a Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Thu, 9 Feb 2023 09:34:17 +0800 Subject: [PATCH 019/355] fix: pass loop variable as a function parameter (#1470) Signed-off-by: Zhizhen He --- go.mod | 50 +++++++++++++----------------- go.sum | 3 -- pkg/builder/build.go | 73 ++++++++++++++++++++------------------------ 3 files changed, 55 insertions(+), 71 deletions(-) diff --git a/go.mod b/go.mod index 49ad5d0a2..041af9c77 100644 --- a/go.mod +++ b/go.mod @@ -4,11 +4,14 @@ go 1.18 require ( github.com/Pallinder/go-randomdata v1.2.0 + github.com/bcicen/ctop v0.7.7 + github.com/charmbracelet/bubbletea v0.23.1 github.com/charmbracelet/lipgloss v0.6.0 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 github.com/containerd/containerd v1.6.16 github.com/creack/pty v1.1.18 + github.com/docker/cli v23.0.0-rc.3+incompatible github.com/docker/docker v23.0.0-rc.1+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 @@ -17,6 +20,7 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 + github.com/mattn/go-isatty v0.0.17 github.com/moby/buildkit v0.11.0-rc3.0.20230112115050-60e82c1bcdd7 github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 @@ -25,7 +29,9 @@ require ( github.com/onsi/gomega v1.26.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 + github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 + github.com/schollz/progressbar/v3 v3.13.0 github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 @@ -41,46 +47,21 @@ require ( golang.org/x/time v0.1.0 ) -require ( - github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect - github.com/moby/patternmatcher v0.5.0 // indirect - github.com/schollz/progressbar/v3 v3.13.0 // indirect -) - -require ( - github.com/aymanbagabas/go-osc52 v1.0.3 // indirect - github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect - github.com/charmbracelet/bubbletea v0.23.1 - github.com/containerd/ttrpc v1.1.0 // indirect - github.com/klauspost/compress v1.15.12 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.17 - github.com/mattn/go-localereader v0.0.1 // indirect - github.com/moby/locker v1.0.1 // indirect - github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect - github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.13.0 // indirect - github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect - github.com/pkg/errors v0.9.1 - github.com/rivo/uniseg v0.4.3 // indirect - github.com/segmentio/backo-go v1.0.0 // indirect -) - require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect - github.com/bcicen/ctop v0.7.7 + github.com/aymanbagabas/go-osc52 v1.0.3 // indirect + github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect github.com/containerd/continuity v0.3.0 // indirect + github.com/containerd/ttrpc v1.1.0 // indirect github.com/containerd/typeurl v1.0.2 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/cli v23.0.0-rc.3+incompatible github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect @@ -102,20 +83,33 @@ require ( github.com/imdario/mergo v0.3.13 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect + github.com/klauspost/compress v1.15.12 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/locker v1.0.1 // indirect + github.com/moby/patternmatcher v0.5.0 // indirect github.com/moby/sys/signal v0.7.0 // indirect + github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect + github.com/muesli/cancelreader v0.2.2 // indirect + github.com/muesli/reflow v0.3.0 // indirect + github.com/muesli/termenv v0.13.0 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect + github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rivo/uniseg v0.4.3 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect diff --git a/go.sum b/go.sum index d5f8977f6..16863c88b 100644 --- a/go.sum +++ b/go.sum @@ -353,7 +353,6 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/kataras/golog v0.0.9/go.mod h1:12HJgwBIZFNGL0EJnMRhmvGA0PQGx8VFwrZtM4CqbAk= github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= @@ -516,7 +515,6 @@ github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -533,7 +531,6 @@ github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFo github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.0 h1:9TeeWRcjW2qd05I8Kf9knPkW4vLM/hYoa6z9ABvxje8= github.com/schollz/progressbar/v3 v3.13.0/go.mod h1:ZBYnSuLAX2LU8P8UiKN/KgF2DY58AJC8yfVYLPC8Ly4= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 6fe8511af..ab0b32c4b 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -228,22 +228,7 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err } } defer pipeW.Close() - solveOpt := client.SolveOpt{ - CacheExports: ce, - Exports: []client.ExportEntry{entry}, - LocalDirs: map[string]string{ - flag.FlagCacheDir: home.GetManager().CacheDir(), - flag.FlagBuildContext: b.BuildContextDir, - }, - Session: attachable, - } - if b.UseHTTPProxy { - solveOpt.FrontendAttrs = map[string]string{ - "build-arg:HTTPS_PROXY": os.Getenv("HTTPS_PROXY"), - "build-arg:HTTP_PROXY": os.Getenv("HTTP_PROXY"), - "build-arg:NO_PROXY": os.Getenv("NO_PROXY"), - } - } + solveOpt := constructSolveOpt(ce, entry, b, attachable) _, err := b.Client.Build(ctx, solveOpt, "envd", b.BuildFunc(), pw.Status()) if err != nil { err = errors.Wrap(&BuildkitdErr{err: err}, "Buildkit error") @@ -270,31 +255,18 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err return nil }) default: - eg.Go(func() error { - solveOpt := client.SolveOpt{ - CacheExports: ce, - Exports: []client.ExportEntry{entry}, - LocalDirs: map[string]string{ - flag.FlagCacheDir: home.GetManager().CacheDir(), - flag.FlagBuildContext: b.BuildContextDir, - }, - Session: attachable, - } - if b.UseHTTPProxy { - solveOpt.FrontendAttrs = map[string]string{ - "build-arg:HTTPS_PROXY": os.Getenv("HTTPS_PROXY"), - "build-arg:HTTP_PROXY": os.Getenv("HTTP_PROXY"), - "build-arg:NO_PROXY": os.Getenv("NO_PROXY"), + func(entry client.ExportEntry) { + eg.Go(func() error { + solveOpt := constructSolveOpt(ce, entry, b, attachable) + _, err := b.Client.Build(ctx, solveOpt, "envd", b.BuildFunc(), pw.Status()) + if err != nil { + err = errors.Wrap(err, "failed to solve LLB") + return err } - } - _, err := b.Client.Build(ctx, solveOpt, "envd", b.BuildFunc(), pw.Status()) - if err != nil { - err = errors.Wrap(err, "failed to solve LLB") - return err - } - b.logger.Debug("llb def is solved successfully") - return nil - }) + b.logger.Debug("llb def is solved successfully") + return nil + }) + }(entry) } } @@ -319,3 +291,24 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err b.logger.Debug("build successfully") return nil } + +func constructSolveOpt(ce []client.CacheOptionsEntry, entry client.ExportEntry, + b generalBuilder, attachable []session.Attachable) client.SolveOpt { + opt := client.SolveOpt{ + CacheExports: ce, + Exports: []client.ExportEntry{entry}, + LocalDirs: map[string]string{ + flag.FlagCacheDir: home.GetManager().CacheDir(), + flag.FlagBuildContext: b.BuildContextDir, + }, + Session: attachable, + } + if b.UseHTTPProxy { + opt.FrontendAttrs = map[string]string{ + "build-arg:HTTPS_PROXY": os.Getenv("HTTPS_PROXY"), + "build-arg:HTTP_PROXY": os.Getenv("HTTP_PROXY"), + "build-arg:NO_PROXY": os.Getenv("NO_PROXY"), + } + } + return opt +} From 986c52a2b9ccec53a688de9bd03bd5cc880129bf Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Mon, 13 Feb 2023 12:08:08 +0800 Subject: [PATCH 020/355] fix: unify receiver type for generalManager (#1473) Signed-off-by: Zhizhen He --- pkg/home/auth.go | 27 +++++++++++++-------------- pkg/home/cache.go | 35 +++++++++++++++++------------------ pkg/home/config.go | 2 +- pkg/home/context.go | 33 ++++++++++++++++----------------- pkg/util/fileutil/file.go | 19 +++++++++++-------- 5 files changed, 58 insertions(+), 58 deletions(-) diff --git a/pkg/home/auth.go b/pkg/home/auth.go index f4f153f61..2dc1c5631 100644 --- a/pkg/home/auth.go +++ b/pkg/home/auth.go @@ -43,22 +43,21 @@ func (m *generalManager) initAuth() error { _, err = os.Stat(m.authFile) if err != nil { - if os.IsNotExist(err) { - logrus.WithField("filename", m.authFile).Debug("Creating file") - file, err := os.Create(m.authFile) - if err != nil { - return errors.Wrap(err, "failed to create file") - } - err = file.Close() - if err != nil { - return errors.Wrap(err, "failed to close file") - } - if err := m.dumpAuth(); err != nil { - return errors.Wrap(err, "failed to dump auth") - } - } else { + if !os.IsNotExist(err) { return errors.Wrap(err, "failed to stat file") } + logrus.WithField("filename", m.authFile).Debug("Creating file") + file, err := os.Create(m.authFile) + if err != nil { + return errors.Wrap(err, "failed to create file") + } + err = file.Close() + if err != nil { + return errors.Wrap(err, "failed to close file") + } + if err := m.dumpAuth(); err != nil { + return errors.Wrap(err, "failed to dump auth") + } } file, err := os.Open(m.authFile) diff --git a/pkg/home/cache.go b/pkg/home/cache.go index d11daed25..9b8ca4093 100644 --- a/pkg/home/cache.go +++ b/pkg/home/cache.go @@ -42,22 +42,21 @@ func (m *generalManager) initCache() error { m.cacheStatusFile = cacheStatusFile _, err = os.Stat(m.cacheStatusFile) if err != nil { - if os.IsNotExist(err) { - logrus.WithField("filename", m.cacheStatusFile).Debug("Creating file") - file, err := os.Create(m.cacheStatusFile) - if err != nil { - return errors.Wrap(err, "failed to create file") - } - err = file.Close() - if err != nil { - return errors.Wrap(err, "failed to close file") - } - if err := m.dumpCacheStatus(); err != nil { - return errors.Wrap(err, "failed to dump cache status") - } - } else { + if !os.IsNotExist(err) { return errors.Wrap(err, "failed to stat file") } + logrus.WithField("filename", m.cacheStatusFile).Debug("Creating file") + file, err := os.Create(m.cacheStatusFile) + if err != nil { + return errors.Wrap(err, "failed to create file") + } + err = file.Close() + if err != nil { + return errors.Wrap(err, "failed to close file") + } + if err := m.dumpCacheStatus(); err != nil { + return errors.Wrap(err, "failed to dump cache status") + } } file, err := os.Open(m.cacheStatusFile) @@ -72,12 +71,12 @@ func (m *generalManager) initCache() error { return nil } -func (m generalManager) MarkCache(key string, cached bool) error { +func (m *generalManager) MarkCache(key string, cached bool) error { m.cacheMap[key] = cached return m.dumpCacheStatus() } -func (m generalManager) Cached(key string) bool { +func (m *generalManager) Cached(key string) bool { return m.cacheMap[key] } @@ -95,11 +94,11 @@ func (m *generalManager) dumpCacheStatus() error { return nil } -func (m generalManager) CacheDir() string { +func (m *generalManager) CacheDir() string { return m.cacheDir } -func (m generalManager) CleanCache() error { +func (m *generalManager) CleanCache() error { if m.cacheDir == "" { return nil } diff --git a/pkg/home/config.go b/pkg/home/config.go index cacf4c4db..89201a536 100644 --- a/pkg/home/config.go +++ b/pkg/home/config.go @@ -38,6 +38,6 @@ func (m *generalManager) initConfig() error { return nil } -func (m generalManager) ConfigFile() string { +func (m *generalManager) ConfigFile() string { return m.configFile } diff --git a/pkg/home/context.go b/pkg/home/context.go index 423f4181e..97735bb5f 100644 --- a/pkg/home/context.go +++ b/pkg/home/context.go @@ -45,22 +45,21 @@ func (m *generalManager) initContext() error { _, err = os.Stat(m.contextFile) if err != nil { - if os.IsNotExist(err) { - logrus.WithField("filename", m.contextFile).Debug("Creating file") - file, err := os.Create(m.contextFile) - if err != nil { - return errors.Wrap(err, "failed to create file") - } - err = file.Close() - if err != nil { - return errors.Wrap(err, "failed to close file") - } - if err := m.dumpContext(); err != nil { - return errors.Wrap(err, "failed to dump context") - } - } else { + if !os.IsNotExist(err) { return errors.Wrap(err, "failed to stat file") } + logrus.WithField("filename", m.contextFile).Debug("Creating file") + file, err := os.Create(m.contextFile) + if err != nil { + return errors.Wrap(err, "failed to create file") + } + err = file.Close() + if err != nil { + return errors.Wrap(err, "failed to close file") + } + if err := m.dumpContext(); err != nil { + return errors.Wrap(err, "failed to dump context") + } } file, err := os.Open(m.contextFile) @@ -75,11 +74,11 @@ func (m *generalManager) initContext() error { return nil } -func (m generalManager) ContextFile() string { +func (m *generalManager) ContextFile() string { return m.contextFile } -func (m generalManager) ContextGetCurrent() (*types.Context, error) { +func (m *generalManager) ContextGetCurrent() (*types.Context, error) { for _, c := range m.context.Contexts { if m.context.Current == c.Name { return &c, nil @@ -131,7 +130,7 @@ func (m *generalManager) ContextRemove(name string) error { return errors.Newf("cannot find context \"%s\"", name) } -func (m generalManager) ContextList() (types.EnvdContext, error) { +func (m *generalManager) ContextList() (types.EnvdContext, error) { return m.context, nil } diff --git a/pkg/util/fileutil/file.go b/pkg/util/fileutil/file.go index 43e635a46..bbd490562 100644 --- a/pkg/util/fileutil/file.go +++ b/pkg/util/fileutil/file.go @@ -98,15 +98,18 @@ func DirExists(filename string) (bool, error) { func CreateIfNotExist(f string) error { _, err := os.Stat(f) + if err == nil { + return nil + } + + if !os.IsNotExist(err) { + return errors.Wrap(err, "failed to stat file") + } + + logrus.WithField("filename", f).Debug("Creating file") + _, err = os.Create(f) if err != nil { - if os.IsNotExist(err) { - logrus.WithField("filename", f).Debug("Creating file") - if _, err := os.Create(f); err != nil { - return errors.Wrap(err, "failed to create file") - } - } else { - return errors.Wrap(err, "failed to stat file") - } + return errors.Wrap(err, "failed to create file") } return nil } From 5bf381601a3bd276a68ee07b28fecb12dd336fe6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 12:08:38 +0800 Subject: [PATCH 021/355] chore(deps): bump github.com/containerd/containerd from 1.6.16 to 1.6.17 (#1474) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.6.16 to 1.6.17. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.6.16...v1.6.17) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 041af9c77..6461febca 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/charmbracelet/lipgloss v0.6.0 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 - github.com/containerd/containerd v1.6.16 + github.com/containerd/containerd v1.6.17 github.com/creack/pty v1.1.18 github.com/docker/cli v23.0.0-rc.3+incompatible github.com/docker/docker v23.0.0-rc.1+incompatible diff --git a/go.sum b/go.sum index 16863c88b..9f690db4f 100644 --- a/go.sum +++ b/go.sum @@ -117,8 +117,8 @@ github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARu github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.6.16 h1:0H5xH6ABsN7XTrxIAKxFpBkFCBtrZ/OSORhCpUnHjrc= -github.com/containerd/containerd v1.6.16/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= +github.com/containerd/containerd v1.6.17 h1:XDnJIeJW0cLf6v7/+N+6L9kGrChHeXekZp2VHu6OpiY= +github.com/containerd/containerd v1.6.17/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= From 4885a2ff05536f820122e397babc0604212e7681 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 12:10:37 +0800 Subject: [PATCH 022/355] chore(deps): bump golang.org/x/crypto from 0.5.0 to 0.6.0 (#1476) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.5.0 to 0.6.0. - [Release notes](https://github.com/golang/crypto/releases) - [Commits](https://github.com/golang/crypto/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 18 ++++++++++-------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 6461febca..803aa1c25 100644 --- a/go.mod +++ b/go.mod @@ -41,9 +41,9 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.24.3 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.5.0 + golang.org/x/crypto v0.6.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.4.0 + golang.org/x/term v0.5.0 golang.org/x/time v0.1.0 ) @@ -125,9 +125,9 @@ require ( go.opentelemetry.io/otel/sdk v1.4.1 // indirect go.opentelemetry.io/otel/trace v1.4.1 // indirect go.opentelemetry.io/proto/otlp v0.12.0 // indirect - golang.org/x/net v0.5.0 // indirect - golang.org/x/sys v0.4.0 // indirect - golang.org/x/text v0.6.0 // indirect + golang.org/x/net v0.6.0 // indirect + golang.org/x/sys v0.5.0 // indirect + golang.org/x/text v0.7.0 // indirect google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect google.golang.org/grpc v1.52.0 // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/go.sum b/go.sum index 9f690db4f..0e54a5810 100644 --- a/go.sum +++ b/go.sum @@ -670,8 +670,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= +golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -748,8 +748,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -846,14 +846,16 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -863,8 +865,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 34ca5b64ac4ab8c60c40e60dfb8d6269e8cf2a59 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Feb 2023 12:10:54 +0800 Subject: [PATCH 023/355] chore(deps): bump github.com/charmbracelet/bubbletea from 0.23.1 to 0.23.2 (#1475) chore(deps): bump github.com/charmbracelet/bubbletea Bumps [github.com/charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea) from 0.23.1 to 0.23.2. - [Release notes](https://github.com/charmbracelet/bubbletea/releases) - [Commits](https://github.com/charmbracelet/bubbletea/compare/v0.23.1...v0.23.2) --- updated-dependencies: - dependency-name: github.com/charmbracelet/bubbletea dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 13 ++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 803aa1c25..bfca51114 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.18 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 - github.com/charmbracelet/bubbletea v0.23.1 + github.com/charmbracelet/bubbletea v0.23.2 github.com/charmbracelet/lipgloss v0.6.0 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 @@ -53,7 +53,7 @@ require ( github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect - github.com/aymanbagabas/go-osc52 v1.0.3 // indirect + github.com/aymanbagabas/go-osc52 v1.2.1 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect @@ -101,7 +101,7 @@ require ( github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.13.0 // indirect + github.com/muesli/termenv v0.14.0 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect diff --git a/go.sum b/go.sum index 0e54a5810..6751114e6 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aymanbagabas/go-osc52 v1.0.3 h1:DTwqENW7X9arYimJrPeGZcV0ln14sGMt3pHZspWD+Mg= -github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= +github.com/aymanbagabas/go-osc52 v1.2.1 h1:q2sWUyDcozPLcLabEMd+a+7Ea2DitxZVN9hTxab9L4E= +github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= github.com/bcicen/ctop v0.7.7/go.mod h1:jO0mmP/wGx4ZEGCWAoMx8DYFNTYNs6YG8wzCGj+DX+Q= @@ -83,8 +83,8 @@ github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/bubbletea v0.23.1 h1:CYdteX1wCiCzKNUlwm25ZHBIc1GXlYFyUIte8WPvhck= -github.com/charmbracelet/bubbletea v0.23.1/go.mod h1:JAfGK/3/pPKHTnAS8JIE2u9f61BjWTQY57RbT25aMXU= +github.com/charmbracelet/bubbletea v0.23.2 h1:vuUJ9HJ7b/COy4I30e8xDVQ+VRDUEFykIjryPfgsdps= +github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+weYLF76mr1JyI7sM= github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY= github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= @@ -399,7 +399,6 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= @@ -455,8 +454,8 @@ github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIW github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= -github.com/muesli/termenv v0.13.0 h1:wK20DRpJdDX8b7Ek2QfhvqhRQFZ237RGRO0RQ/Iqdy0= -github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc= +github.com/muesli/termenv v0.14.0 h1:8x9NFfOe8lmIWK4pgy3IfVEy47f+ppe3tUqdPZG2Uy0= +github.com/muesli/termenv v0.14.0/go.mod h1:kG/pF1E7fh949Xhe156crRUrHNyK221IuGO7Ez60Uc8= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= From 09296619283ce568866df414bf26db3bda24d9c7 Mon Sep 17 00:00:00 2001 From: Kaiyang Chen <48289729+Kaiyang-Chen@users.noreply.github.com> Date: Mon, 13 Feb 2023 22:03:24 -0600 Subject: [PATCH 024/355] feat: support buildx moby worker in docker 23.0.0 onward to accelerating building process by skipping docker load (#1472) * feat: support buildx moby worker in docker 23.0.0 to accelerating building process by skipping docker load Signed-off-by: Kaiyang-Chen * fix: lint error Signed-off-by: Kaiyang-Chen * fix: lint error Signed-off-by: Kaiyang Chen * feat: relocate getDockerVersion in pkg/driver/docker Signed-off-by: Kaiyang Chen --------- Signed-off-by: Kaiyang-Chen Signed-off-by: Kaiyang Chen --- pkg/app/bootstrap.go | 18 ++++++++++++---- pkg/app/prune.go | 18 ++++++++++++---- pkg/builder/build.go | 40 ++++++++++++++++++++++++++++-------- pkg/buildkitd/buildkitd.go | 37 +++++++++++++++++++++++++++++++++ pkg/driver/docker/docker.go | 21 +++++++++++++++++++ pkg/home/context.go | 1 + pkg/home/manager.go | 8 +++++++- pkg/lang/ir/v0/supervisor.go | 7 +++++-- pkg/lang/ir/v1/supervisor.go | 7 +++++-- pkg/types/envd.go | 1 + 10 files changed, 137 insertions(+), 21 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index f238ace65..3a6fa80b0 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -29,6 +29,7 @@ import ( "github.com/tensorchord/envd/pkg/buildkitd" "github.com/tensorchord/envd/pkg/home" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" + "github.com/tensorchord/envd/pkg/types" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -205,10 +206,19 @@ func buildkit(clicontext *cli.Context) error { } logrus.Debug("bootstrap the buildkitd container") - bkClient, err := buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror")) - if err != nil { - return errors.Wrap(err, "failed to create buildkit client") + var bkClient buildkitd.Client + if c.Builder == types.BuilderTypeMoby { + bkClient, err = buildkitd.NewMobyClient(clicontext.Context, + c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror")) + if err != nil { + return errors.Wrap(err, "failed to create moby buildkit client") + } + } else { + bkClient, err = buildkitd.NewClient(clicontext.Context, + c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror")) + if err != nil { + return errors.Wrap(err, "failed to create buildkit client") + } } defer bkClient.Close() logrus.Infof("The buildkit is running at %s", bkClient.BuildkitdAddr()) diff --git a/pkg/app/prune.go b/pkg/app/prune.go index 555fe35a8..aedce9bde 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -23,6 +23,7 @@ import ( "github.com/tensorchord/envd/pkg/app/telemetry" "github.com/tensorchord/envd/pkg/buildkitd" "github.com/tensorchord/envd/pkg/home" + "github.com/tensorchord/envd/pkg/types" ) var CommandPrune = &cli.Command{ @@ -77,10 +78,19 @@ func prune(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to get the current context") } - bkClient, err := buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, "") - if err != nil { - return errors.Wrap(err, "failed to create buildkit client") + var bkClient buildkitd.Client + if c.Builder == types.BuilderTypeMoby { + bkClient, err = buildkitd.NewMobyClient(clicontext.Context, + c.Builder, c.BuilderAddress, "") + if err != nil { + return errors.Wrap(err, "failed to create moby buildkit client") + } + } else { + bkClient, err = buildkitd.NewClient(clicontext.Context, + c.Builder, c.BuilderAddress, "") + if err != nil { + return errors.Wrap(err, "failed to create buildkit client") + } } if err := bkClient.Prune(clicontext.Context, keepDuration, keepStorage, filter, verbose, cleanAll); err != nil { diff --git a/pkg/builder/build.go b/pkg/builder/build.go index ab0b32c4b..aa454c1fd 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -45,12 +45,21 @@ func New(ctx context.Context, opt Options) (Builder, error) { return nil, errors.Wrap(err, "failed to parse output") } + c, err := home.GetManager().ContextGetCurrent() + if err != nil { + return nil, errors.Wrap(err, "failed to get the current context") + } + logrus.WithField("entry", entries).Debug("getting exporter entry") // Build docker image by default if len(entries) == 0 { + exportType := client.ExporterDocker + if c.Builder == types.BuilderTypeMoby { + exportType = "moby" + } entries = []client.ExportEntry{ { - Type: client.ExporterDocker, + Type: exportType, }, } } else if len(entries) > 1 { @@ -76,13 +85,19 @@ func New(ctx context.Context, opt Options) (Builder, error) { GetDepsFilesHandler: vc.GetDefaultGraph().GetDepsFiles, } - c, err := home.GetManager().ContextGetCurrent() - if err != nil { - return nil, errors.Wrap(err, "failed to get the current context") - } - cli, err := buildkitd.NewClient(ctx, c.Builder, c.BuilderAddress, "") - if err != nil { - return nil, errors.Wrap(err, "failed to create buildkit client") + var cli buildkitd.Client + if c.Builder == types.BuilderTypeMoby { + cli, err = buildkitd.NewMobyClient(ctx, + c.Builder, c.BuilderAddress, "") + if err != nil { + return nil, errors.Wrap(err, "failed to create moby buildkit client") + } + } else { + cli, err = buildkitd.NewClient(ctx, + c.Builder, c.BuilderAddress, "") + if err != nil { + return nil, errors.Wrap(err, "failed to create buildkit client") + } } b.Client = cli @@ -294,6 +309,15 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err func constructSolveOpt(ce []client.CacheOptionsEntry, entry client.ExportEntry, b generalBuilder, attachable []session.Attachable) client.SolveOpt { + c, _ := home.GetManager().ContextGetCurrent() + if entry.Attrs == nil && c.Builder == types.BuilderTypeMoby { + entry = client.ExportEntry{ + Type: "moby", + Attrs: map[string]string{ + "name": b.Tag, + }, + } + } opt := client.SolveOpt{ CacheExports: ce, Exports: []client.ExportEntry{entry}, diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index bd4f4edde..adaaf6c47 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -17,11 +17,13 @@ package buildkitd import ( "context" "fmt" + "net" "os" "text/tabwriter" "time" "github.com/cockroachdb/errors" + dockerclient "github.com/docker/docker/client" "github.com/moby/buildkit/client" "github.com/moby/buildkit/client/llb" gateway "github.com/moby/buildkit/frontend/gateway/client" @@ -69,6 +71,41 @@ type generalClient struct { logger *logrus.Entry } +func NewMobyClient(ctx context.Context, driver types.BuilderType, + socket, mirror string) (Client, error) { + logrus.Debug("getting moby buildkit client") + c := &generalClient{ + containerName: socket, + image: viper.GetString(flag.FlagBuildkitdImage), + mirror: mirror, + } + c.socket = socket + c.driver = driver + c.logger = logrus.WithFields(logrus.Fields{ + "container": c.containerName, + "image": c.image, + "socket": c.socket, + "driver": c.driver, + }) + dockerCli, err := dockerclient.NewClientWithOpts(dockerclient.FromEnv, dockerclient.WithAPIVersionNegotiation()) + if err != nil { + return nil, errors.Wrap(err, "failed to create the client") + } + bkcli, err := client.New(ctx, c.BuildkitdAddr(), + client.WithFailFast(), + client.WithContextDialer(func(context.Context, string) (net.Conn, error) { + return dockerCli.DialHijack(ctx, "/grpc", "h2c", nil) + }), client.WithSessionDialer(func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) { + return dockerCli.DialHijack(ctx, "/session", proto, meta) + }), + ) + if err != nil { + return nil, errors.Wrap(err, "failed to create buildkit clientt") + } + c.Client = bkcli + return c, nil +} + func NewClient(ctx context.Context, driver types.BuilderType, socket, mirror string) (Client, error) { c := &generalClient{ diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index a564297f5..c1f37dfb7 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -21,6 +21,7 @@ import ( "io" "os" "regexp" + "strconv" "strings" "time" @@ -380,3 +381,23 @@ func (c dockerClient) waitUntilRunning(ctx context.Context, } } } + +func GetDockerVersion() (int, error) { + + ctx := context.Background() + cli, err := client.NewClientWithOpts(client.FromEnv, client.WithAPIVersionNegotiation()) + if err != nil { + return -1, err + } + defer cli.Close() + + info, err := cli.Info(ctx) + if err != nil { + return -1, err + } + version, err := strconv.Atoi(strings.Split(info.ServerVersion, ".")[0]) + if err != nil { + return -1, err + } + return version, nil +} diff --git a/pkg/home/context.go b/pkg/home/context.go index 97735bb5f..b3dcf16d0 100644 --- a/pkg/home/context.go +++ b/pkg/home/context.go @@ -95,6 +95,7 @@ func (m *generalManager) ContextCreate(ctx types.Context, use bool) error { } switch ctx.Builder { case types.BuilderTypeDocker, + types.BuilderTypeMoby, types.BuilderTypeNerdctl, types.BuilderTypeKubernetes, types.BuilderTypeUNIXDomainSocket, diff --git a/pkg/home/manager.go b/pkg/home/manager.go index 518c8ac42..cc41a9f05 100644 --- a/pkg/home/manager.go +++ b/pkg/home/manager.go @@ -20,6 +20,7 @@ import ( "github.com/cockroachdb/errors" "github.com/sirupsen/logrus" + "github.com/tensorchord/envd/pkg/driver/docker" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" "github.com/tensorchord/envd/pkg/types" ) @@ -53,6 +54,11 @@ var ( ) func Initialize() error { + builder := types.BuilderTypeDocker + dockerVersion, err := docker.GetDockerVersion() + if err == nil && dockerVersion > 22 { + builder = types.BuilderTypeMoby + } once.Do(func() { defaultManager = &generalManager{ cacheMap: make(map[string]bool), @@ -61,7 +67,7 @@ func Initialize() error { Contexts: []types.Context{ { Name: "default", - Builder: types.BuilderTypeDocker, + Builder: builder, BuilderAddress: "envd_buildkitd", Runner: types.RunnerTypeDocker, RunnerAddress: nil, diff --git a/pkg/lang/ir/v0/supervisor.go b/pkg/lang/ir/v0/supervisor.go index 550500be8..1e492f40f 100644 --- a/pkg/lang/ir/v0/supervisor.go +++ b/pkg/lang/ir/v0/supervisor.go @@ -58,8 +58,11 @@ func (g generalGraph) installHorust(root llb.State) llb.State { File(llb.Mkdir(types.HorustServiceDir, 0755, llb.WithParents(true)), llb.WithCustomNamef("[internal] mkdir for horust service: %s", types.HorustServiceDir)). File(llb.Mkdir(types.HorustLogDir, 0777, llb.WithParents(true)), - llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)) - return horust + llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)). + Run(llb.Shlexf(`sudo chmod 777 %s`, types.HorustLogDir), + llb.WithCustomName("[internal] change dirctory permission for logging")) + + return horust.Root() } func (g generalGraph) addNewProcess(root llb.State, name, command string, depends []string) llb.State { diff --git a/pkg/lang/ir/v1/supervisor.go b/pkg/lang/ir/v1/supervisor.go index 1ce7d87f6..bc7c7284d 100644 --- a/pkg/lang/ir/v1/supervisor.go +++ b/pkg/lang/ir/v1/supervisor.go @@ -58,8 +58,11 @@ func (g generalGraph) installHorust(root llb.State) llb.State { File(llb.Mkdir(types.HorustServiceDir, 0755, llb.WithParents(true)), llb.WithCustomNamef("[internal] mkdir for horust service: %s", types.HorustServiceDir)). File(llb.Mkdir(types.HorustLogDir, 0777, llb.WithParents(true)), - llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)) - return horust + llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)). + Run(llb.Shlexf(`sudo chmod 777 %s`, types.HorustLogDir), + llb.WithCustomName("[internal] change dirctory permission for logging")) + + return horust.Root() } func (g generalGraph) addNewProcess(root llb.State, name, command string, depends []string) llb.State { diff --git a/pkg/types/envd.go b/pkg/types/envd.go index c41155ee6..32b988e64 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -122,6 +122,7 @@ type Context struct { type BuilderType string const ( + BuilderTypeMoby BuilderType = "moby-worker" BuilderTypeDocker BuilderType = "docker-container" BuilderTypeNerdctl BuilderType = "nerdctl-container" BuilderTypeKubernetes BuilderType = "kube-pod" From 083e3eb3aa40c052f22930f4c566d4a8bd64115f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 11:51:46 +0800 Subject: [PATCH 025/355] docs: updated CHANGELOG.md (#1479) Signed-off-by: GitHub Co-authored-by: gaocegege --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b6f6fc521..ae08da8be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## v0.3.12 (2023-02-14) + + * [0929661](https://github.com/tensorchord/envd/commit/09296619283ce568866df414bf26db3bda24d9c7) feat: support buildx moby worker in docker 23.0.0 onward to accelerating building process by skipping docker load (#1472) + * [34ca5b6](https://github.com/tensorchord/envd/commit/34ca5b64ac4ab8c60c40e60dfb8d6269e8cf2a59) chore(deps): bump github.com/charmbracelet/bubbletea from 0.23.1 to 0.23.2 (#1475) + * [4885a2f](https://github.com/tensorchord/envd/commit/4885a2ff05536f820122e397babc0604212e7681) chore(deps): bump golang.org/x/crypto from 0.5.0 to 0.6.0 (#1476) + * [5bf3816](https://github.com/tensorchord/envd/commit/5bf381601a3bd276a68ee07b28fecb12dd336fe6) chore(deps): bump github.com/containerd/containerd from 1.6.16 to 1.6.17 (#1474) + * [986c52a](https://github.com/tensorchord/envd/commit/986c52a2b9ccec53a688de9bd03bd5cc880129bf) fix: unify receiver type for generalManager (#1473) + * [ae3a1e5](https://github.com/tensorchord/envd/commit/ae3a1e5680bffa214e22f0ef3d8a5b10b6be824a) fix: pass loop variable as a function parameter (#1470) + * [23e4fa9](https://github.com/tensorchord/envd/commit/23e4fa9a552aecab43566504f6c66ede5f57d6b2) feat: add progress bar for `envd up` and `envd run` (#1460) + * [d9f8dfc](https://github.com/tensorchord/envd/commit/d9f8dfc8a36d7316dd6908e722418efed7fef17a) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.7.1 to 2.8.0 (#1465) + * [8706aef](https://github.com/tensorchord/envd/commit/8706aef34c0aa1f3afd17522199548825459495a) chore(deps): bump github.com/urfave/cli/v2 from 2.24.1 to 2.24.3 (#1464) + * [8413af8](https://github.com/tensorchord/envd/commit/8413af8775cc9d59393abd5a2c1365f23deaa216) chore(deps): bump docker/build-push-action from 3 to 4 (#1463) + * [4b3e768](https://github.com/tensorchord/envd/commit/4b3e7689fb87b0d0465b89565e7a870669895e6e) chore(deps): bump github.com/cockroachdb/errors from 1.9.0 to 1.9.1 (#1467) + +### Contributors + + * Kaiyang Chen + * Keming + * Zhizhen He + * dependabot[bot] + ## v0.3.11 (2023-02-01) * [89383b5](https://github.com/tensorchord/envd/commit/89383b5bba5229e9cb133515b69a1eccdd0331da) fix: rm redundant ForwardAgent config in ssh config (#1458) From 7d8fc46a6d311b51ede996ca2d8709d1335780bc Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Thu, 16 Feb 2023 19:35:09 +0800 Subject: [PATCH 026/355] fix: add revive and address indent-error-flow issues (#1480) Signed-off-by: Zhizhen He --- .golangci.yml | 9 +++++++-- cmd/envd-sshd/main.go | 11 ++++++----- pkg/app/exec.go | 12 ++++++------ pkg/builder/build.go | 3 +-- pkg/envd/factory.go | 17 ++++++++--------- pkg/lang/ir/v0/editor.go | 6 +++--- pkg/lang/ir/v0/shell.go | 6 +++--- pkg/lang/ir/v1/editor.go | 6 +++--- pkg/lang/ir/v1/shell.go | 6 +++--- pkg/ssh/ssh.go | 9 +++------ pkg/util/netutil/netutil.go | 14 +++++++------- 11 files changed, 50 insertions(+), 49 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index c0b8c75f4..ec678cef0 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,15 +1,16 @@ linters: enable: - - gofmt - bodyclose - errcheck - - goimports - errorlint - exportloopref + - gofmt + - goimports - gosimple - govet - ineffassign - misspell + - revive - rowserrcheck - sqlclosecheck - staticcheck @@ -20,3 +21,7 @@ linters: linters-settings: goimports: local-prefixes: github.com/tensorchord/envd/ + revive: + rules: + # available rules: https://github.com/mgechev/revive#available-rules + - name: indent-error-flow diff --git a/cmd/envd-sshd/main.go b/cmd/envd-sshd/main.go index 3840c9b93..86508af3b 100644 --- a/cmd/envd-sshd/main.go +++ b/cmd/envd-sshd/main.go @@ -110,7 +110,8 @@ func sshServer(c *cli.Context) error { port := c.Int(flagPort) if port == 0 { return errors.New("port must be set") - } else if port <= 1024 { + } + if port <= 1024 { return errors.New("failed to parse port: port is reserved") } @@ -141,12 +142,12 @@ func sshServer(c *cli.Context) error { return errors.Wrapf( err, "reading private key %s failed", c.String(flagHostKey)) } - if privateKey, err := rawssh.ParsePrivateKey(pemBytes); err != nil { + privateKey, err := rawssh.ParsePrivateKey(pemBytes) + if err != nil { return err - } else { - logrus.Debugf("load host key from %s", c.String(flagHostKey)) - hostKey = privateKey } + logrus.Debugf("load host key from %s", c.String(flagHostKey)) + hostKey = privateKey } srv := sshd.Server{ diff --git a/pkg/app/exec.go b/pkg/app/exec.go index a6752aea7..67b529cb8 100644 --- a/pkg/app/exec.go +++ b/pkg/app/exec.go @@ -112,11 +112,11 @@ func exec(clicontext *cli.Context) error { } logrus.Debugf("runtime commands: %s", rg.RuntimeCommands) - if cmd, ok := rg.RuntimeCommands[command]; !ok { + cmd, ok := rg.RuntimeCommands[command] + if !ok { return errors.Newf("command %s does not exist", command) - } else { - resultCommand = cmd } + resultCommand = cmd } opt, err := ssh.GetOptions(name) @@ -128,12 +128,12 @@ func exec(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to get the ssh client") } - if bytes, err := sshClient.ExecWithOutput(resultCommand); err != nil { + bytes, err := sshClient.ExecWithOutput(resultCommand) + if err != nil { fmt.Fprintln(clicontext.App.Writer, string(bytes)) return errors.Wrapf(err, "failed to execute the command `%s`", resultCommand) - } else { - fmt.Fprint(clicontext.App.Writer, string(bytes)) } + fmt.Fprint(clicontext.App.Writer, string(bytes)) return nil } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index aa454c1fd..894f4d16c 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -299,9 +299,8 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err // Close the pipe on cancels, otherwise the whole thing hangs. pipeR.Close() return errors.Wrap(err, "build cancelled") - } else { - return errors.Wrap(err, "failed to wait error group") } + return errors.Wrap(err, "failed to wait error group") } b.logger.Debug("build successfully") return nil diff --git a/pkg/envd/factory.go b/pkg/envd/factory.go index 72c54abe9..c709d231b 100644 --- a/pkg/envd/factory.go +++ b/pkg/envd/factory.go @@ -68,14 +68,13 @@ func New(ctx context.Context, opt Options) (Engine, error) { Client: cli, Loginname: ac.Name, }, nil - } else { - cli, err := client.NewClientWithOpts( - client.FromEnv, client.WithAPIVersionNegotiation()) - if err != nil { - return nil, errors.Wrap(err, "failed to create the docker client") - } - return &dockerEngine{ - Client: cli, - }, nil } + cli, err := client.NewClientWithOpts( + client.FromEnv, client.WithAPIVersionNegotiation()) + if err != nil { + return nil, errors.Wrap(err, "failed to create the docker client") + } + return &dockerEngine{ + Client: cli, + }, nil } diff --git a/pkg/lang/ir/v0/editor.go b/pkg/lang/ir/v0/editor.go index 4d7bd68ad..63c86df8e 100644 --- a/pkg/lang/ir/v0/editor.go +++ b/pkg/lang/ir/v0/editor.go @@ -40,11 +40,11 @@ func (g generalGraph) compileVSCode() (*llb.State, error) { return nil, errors.Wrap(err, "failed to create vscode client") } g.Writer.LogVSCodePlugin(p, compileui.ActionStart, false) - if cached, err := vscodeClient.DownloadOrCache(p); err != nil { + cached, err := vscodeClient.DownloadOrCache(p) + if err != nil { return nil, err - } else { - g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) } + g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) ext := llb.Scratch().File(llb.Copy(llb.Local(flag.FlagCacheDir), vscodeClient.PluginPath(p), fileutil.EnvdHomeDir(".vscode-server", "extensions", p.String()), diff --git a/pkg/lang/ir/v0/shell.go b/pkg/lang/ir/v0/shell.go index 6035f0228..7f72dc620 100644 --- a/pkg/lang/ir/v0/shell.go +++ b/pkg/lang/ir/v0/shell.go @@ -106,11 +106,11 @@ func (g generalGraph) compileZSH(root llb.State) (llb.State, error) { ohMyZSHPath := fileutil.EnvdHomeDir(".oh-my-zsh") m := shell.NewManager() g.Writer.LogZSH(compileui.ActionStart, false) - if cached, err := m.DownloadOrCache(); err != nil { + cached, err := m.DownloadOrCache() + if err != nil { return llb.State{}, errors.Wrap(err, "failed to download oh-my-zsh") - } else { - g.Writer.LogZSH(compileui.ActionEnd, cached) } + g.Writer.LogZSH(compileui.ActionEnd, cached) zshStage := root. File(llb.Copy(llb.Local(flag.FlagCacheDir), "oh-my-zsh", ohMyZSHPath, &llb.CopyInfo{CreateDestPath: true}, llb.WithUIDGID(g.uid, g.gid))). diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index a92e87ba9..976cb47cf 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -40,11 +40,11 @@ func (g generalGraph) compileVSCode() (llb.State, error) { return llb.State{}, errors.Wrap(err, "failed to create vscode client") } g.Writer.LogVSCodePlugin(p, compileui.ActionStart, false) - if cached, err := vscodeClient.DownloadOrCache(p); err != nil { + cached, err := vscodeClient.DownloadOrCache(p) + if err != nil { return llb.State{}, err - } else { - g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) } + g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) ext := llb.Scratch().File(llb.Copy(llb.Local(flag.FlagCacheDir), vscodeClient.PluginPath(p), fileutil.EnvdHomeDir(".vscode-server", "extensions", p.String()), diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index b5bf5cc3d..24fffe872 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -112,11 +112,11 @@ func (g generalGraph) compileZSH(root llb.State) (llb.State, error) { ohMyZSHPath := fileutil.EnvdHomeDir(".oh-my-zsh") m := shell.NewManager() g.Writer.LogZSH(compileui.ActionStart, false) - if cached, err := m.DownloadOrCache(); err != nil { + cached, err := m.DownloadOrCache() + if err != nil { return llb.State{}, errors.Wrap(err, "failed to download oh-my-zsh") - } else { - g.Writer.LogZSH(compileui.ActionEnd, cached) } + g.Writer.LogZSH(compileui.ActionEnd, cached) zshStage := root. File(llb.Copy(llb.Local(flag.FlagCacheDir), "oh-my-zsh", ohMyZSHPath, &llb.CopyInfo{CreateDestPath: true})). diff --git a/pkg/ssh/ssh.go b/pkg/ssh/ssh.go index 8309d3e24..c2d74631e 100644 --- a/pkg/ssh/ssh.go +++ b/pkg/ssh/ssh.go @@ -357,23 +357,20 @@ func parsePemBlock(block *pem.Block) (interface{}, error) { key, err := x509.ParsePKCS1PrivateKey(block.Bytes) if err != nil { return nil, errors.Newf("Parsing PKCS private key failed %w", err) - } else { - return key, nil } + return key, nil case "EC PRIVATE KEY": key, err := x509.ParseECPrivateKey(block.Bytes) if err != nil { return nil, errors.Newf("Parsing EC private key failed %w", err) - } else { - return key, nil } + return key, nil case "DSA PRIVATE KEY": key, err := ssh.ParseDSAPrivateKey(block.Bytes) if err != nil { return nil, errors.Newf("Parsing DSA private key failed %w", err) - } else { - return key, nil } + return key, nil default: return nil, errors.Newf("Parsing private key failed, unsupported key type %q", block.Type) } diff --git a/pkg/util/netutil/netutil.go b/pkg/util/netutil/netutil.go index 228b1057c..67f12bbac 100644 --- a/pkg/util/netutil/netutil.go +++ b/pkg/util/netutil/netutil.go @@ -32,13 +32,13 @@ func GetFreePort() (int, error) { // GetHost get the IP address from the address. func GetHost(addr string) (string, error) { - if u, err := url.Parse(addr); err != nil { + u, err := url.Parse(addr) + if err != nil { return "", err - } else { - h := u.Hostname() - if h == "" { - return "", fmt.Errorf("failed to get the hostname from %s", addr) - } - return h, nil } + h := u.Hostname() + if h == "" { + return "", fmt.Errorf("failed to get the hostname from %s", addr) + } + return h, nil } From 8adb6a9a0ad7ebea21fd92bdd80883bb71291938 Mon Sep 17 00:00:00 2001 From: x0oo0x Date: Fri, 17 Feb 2023 01:36:51 -0500 Subject: [PATCH 027/355] Julia MNIST classification e2e test example (#1484) * julia mnist classification example Signed-off-by: Botong Ou * julia mnist classification example Signed-off-by: Botong Ou * fix lint problem Signed-off-by: Botong Ou * fix lint problem Signed-off-by: Botong Ou * fix another lint problem Signed-off-by: Botong Ou * fix another lint problem Signed-off-by: Botong Ou --------- Signed-off-by: Botong Ou --- e2e/v1/docs/julia_mnist_test.go | 28 ++++++++++++++ e2e/v1/docs/testdata/julia_mnist/build.envd | 7 ++++ e2e/v1/docs/testdata/julia_mnist/mnist.jl | 43 +++++++++++++++++++++ 3 files changed, 78 insertions(+) create mode 100644 e2e/v1/docs/julia_mnist_test.go create mode 100644 e2e/v1/docs/testdata/julia_mnist/build.envd create mode 100644 e2e/v1/docs/testdata/julia_mnist/mnist.jl diff --git a/e2e/v1/docs/julia_mnist_test.go b/e2e/v1/docs/julia_mnist_test.go new file mode 100644 index 000000000..f48292981 --- /dev/null +++ b/e2e/v1/docs/julia_mnist_test.go @@ -0,0 +1,28 @@ +package docs + +import ( + "strconv" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + e2e "github.com/tensorchord/envd/e2e/v1" +) + +var _ = Describe("julia_mnist", Ordered, func() { + exampleName := "julia_mnist" + testcase := "e2e" + e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) + BeforeAll(e.BuildImage(true)) + BeforeEach(e.RunContainer()) + It("execute runtime command `julia-mnist`", func() { + res, err := e.ExecRuntimeCommand("julia-mnist") + Expect(err).To(BeNil()) + IsNumber := func(s string) bool { + _, err = strconv.ParseFloat(s, 64) + return err == nil + } + Expect(res).To(Satisfy(IsNumber)) + }) + AfterEach(e.DestroyContainer()) +}) diff --git a/e2e/v1/docs/testdata/julia_mnist/build.envd b/e2e/v1/docs/testdata/julia_mnist/build.envd new file mode 100644 index 000000000..71db1252e --- /dev/null +++ b/e2e/v1/docs/testdata/julia_mnist/build.envd @@ -0,0 +1,7 @@ +# syntax=v1 +def build(): + base(dev=True) + + install.julia() + install.julia_packages(name=["Flux", "MLDatasets"]) + runtime.command(commands={"julia-mnist": "julia mnist.jl"}) diff --git a/e2e/v1/docs/testdata/julia_mnist/mnist.jl b/e2e/v1/docs/testdata/julia_mnist/mnist.jl new file mode 100644 index 000000000..e4327ad3a --- /dev/null +++ b/e2e/v1/docs/testdata/julia_mnist/mnist.jl @@ -0,0 +1,43 @@ +using Flux, MLDatasets +using Flux: train!, onehotbatch + +ENV["DATADEPS_ALWAYS_ACCEPT"] = "true" + +# Load training data (images, labels) +x_train, y_train = MLDatasets.MNIST(split=:train)[:] +# Load test data (images, labels) +x_test, y_test = MLDatasets.MNIST(split=:test)[:] +# Convert grayscale to float +x_train = Float32.(x_train) +# Create labels batch +y_train = Flux.onehotbatch(y_train, 0:9) + +model = Chain( + Dense(784, 256, relu), + Dense(256, 64, relu), + Dense(64, 10, relu), + softmax +) + +loss(x, y) = Flux.Losses.logitcrossentropy(model(x), y) + +optimizer = ADAM(0.0001) + +parameters = Flux.params(model) +# flatten() function converts array 28x28x60000 into 784x60000 (28*28x60000) +train_data = [(Flux.flatten(x_train), Flux.flatten(y_train))] +# Range in loop can be used smaller +for i in 1:100 + Flux.train!(loss, parameters, train_data, optimizer) +end + +test_data = [(Flux.flatten(x_test), y_test)] +accuracy = 0 +for i in 1:length(y_test) + global accuracy + if findmax(model(test_data[1][1][:, i]))[2] - 1 == y_test[i] + accuracy = accuracy + 1 + end +end + +print(accuracy / length(y_test)) \ No newline at end of file From 8c3e97ada2dac1e2a71a2a038a0a29065867c5b8 Mon Sep 17 00:00:00 2001 From: Yuan Tang Date: Fri, 17 Feb 2023 01:37:20 -0500 Subject: [PATCH 028/355] ci: Remove rowserrcheck linter to avoid warning (#1485) Signed-off-by: Yuan Tang --- .golangci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index ec678cef0..8e4d55f30 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -11,7 +11,6 @@ linters: - ineffassign - misspell - revive - - rowserrcheck - sqlclosecheck - staticcheck - typecheck From b0143c34b2d868c5f2e2c7b231b5ededca0f29ea Mon Sep 17 00:00:00 2001 From: Yuan Tang Date: Fri, 17 Feb 2023 22:31:40 -0500 Subject: [PATCH 029/355] feat: Allow buildkit timeout to be configurable (#1482) * feat: Allow buildkit timeout to be configurable Signed-off-by: Yuan Tang * Add docs Signed-off-by: Yuan Tang --------- Signed-off-by: Yuan Tang --- e2e/v1/docs/extra_lang_test.go | 14 +++++++++++++ pkg/buildkitd/buildkitd.go | 8 ++++--- pkg/util/envutil/env.go | 38 ++++++++++++++++++++++++++++++++++ pkg/util/envutil/env_test.go | 32 ++++++++++++++++++++++++++++ 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 pkg/util/envutil/env.go create mode 100644 pkg/util/envutil/env_test.go diff --git a/e2e/v1/docs/extra_lang_test.go b/e2e/v1/docs/extra_lang_test.go index 9ad186435..dba356cc4 100644 --- a/e2e/v1/docs/extra_lang_test.go +++ b/e2e/v1/docs/extra_lang_test.go @@ -1,3 +1,17 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package docs import ( diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index adaaf6c47..aa2255b3f 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -29,6 +29,7 @@ import ( gateway "github.com/moby/buildkit/frontend/gateway/client" "github.com/sirupsen/logrus" "github.com/spf13/viper" + "github.com/tonistiigi/units" "github.com/tensorchord/envd/pkg/driver" @@ -36,12 +37,13 @@ import ( "github.com/tensorchord/envd/pkg/driver/nerdctl" "github.com/tensorchord/envd/pkg/flag" "github.com/tensorchord/envd/pkg/types" + "github.com/tensorchord/envd/pkg/util/envutil" ) var ( interval = time.Second * 1 - timeoutConnection = time.Second * 5 - timeoutRun = time.Second * 3 + connectingTimeout = envutil.GetDurationWithDefault("BUILDKIT_CONNECTING_TIMEOUT", time.Second*5) + runningTimeout = envutil.GetDurationWithDefault("BUILDKIT_RUNNING_TIMEOUT", time.Second*3) ) // Client is a client for the buildkitd daemon. @@ -128,7 +130,7 @@ func NewClient(ctx context.Context, driver types.BuilderType, } c.Client = cli - if _, err := c.Bootstrap(ctx, timeoutRun, timeoutConnection); err != nil { + if _, err := c.Bootstrap(ctx, runningTimeout, connectingTimeout); err != nil { return nil, errors.Wrap(err, "failed to bootstrap the buildkitd") } return c, nil diff --git a/pkg/util/envutil/env.go b/pkg/util/envutil/env.go new file mode 100644 index 000000000..1036a557c --- /dev/null +++ b/pkg/util/envutil/env.go @@ -0,0 +1,38 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package envutil + +import ( + "os" + "time" + + log "github.com/sirupsen/logrus" +) + +// GetDurationWithDefault parses a duration string from environment variable with the given key +// or uses the given default duration. The duration string is a possibly signed sequence of +// decimal numbers, each with optional fraction and a unit suffix, such as "300ms", "-1.5h" or "2h45m". +// Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". +func GetDurationWithDefault(key string, o time.Duration) time.Duration { + v, found := os.LookupEnv(key) + if found && v != "" { + d, err := time.ParseDuration(v) + if err == nil { + return d + } + log.WithField(key, v).WithError(err).Panic("failed to parse") + } + return o +} diff --git a/pkg/util/envutil/env_test.go b/pkg/util/envutil/env_test.go new file mode 100644 index 000000000..8cafcd5e2 --- /dev/null +++ b/pkg/util/envutil/env_test.go @@ -0,0 +1,32 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package envutil + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestGetDurationWithDefault(t *testing.T) { + assert.Equal(t, time.Second, GetDurationWithDefault("", time.Second), "default value") + t.Setenv("FOO", "bar") + assert.Panics(t, func() { GetDurationWithDefault("FOO", time.Second) }, "bad value") + t.Setenv("FOO", "1h") + assert.Equal(t, time.Hour, GetDurationWithDefault("FOO", time.Second), "env var value") + t.Setenv("FOO", "") + assert.Equal(t, time.Second, GetDurationWithDefault("FOO", time.Second), "empty var value; default value") +} From 53ba50e06fd1af5026a59c88d3886b5c8ca059de Mon Sep 17 00:00:00 2001 From: Keming Date: Sat, 18 Feb 2023 17:44:24 +0800 Subject: [PATCH 030/355] feat: support CPU and memory limit for docker runner (#1486) * feat: support CPU and memory limit for docker runner Signed-off-by: Keming * fix typo Signed-off-by: Keming * add cpu-set, use cpu quota on UNIX Signed-off-by: Keming * panic if both cpus and cpu-set are set Signed-off-by: Keming --------- Signed-off-by: Keming --- pkg/app/run.go | 4 ++-- pkg/app/up.go | 22 ++++++++++++++++++++++ pkg/envd/docker.go | 30 ++++++++++++++++++++++++++++++ pkg/envd/types.go | 1 + 4 files changed, 55 insertions(+), 2 deletions(-) diff --git a/pkg/app/run.go b/pkg/app/run.go index 15386949c..fd756e963 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -87,7 +87,7 @@ var CommandCreate = &cli.Command{ Value: 2048, }, &cli.StringFlag{ - Name: "cpu", + Name: "cpus", Usage: "Request CPU resources (number of cores), such as 0.5, 1, 2", Value: "", }, @@ -134,7 +134,7 @@ func run(clicontext *cli.Context) error { Image: clicontext.String("image"), Timeout: clicontext.Duration("timeout"), NumMem: clicontext.String("memory"), - NumCPU: clicontext.String("cpu"), + NumCPU: clicontext.String("cpus"), NumGPU: clicontext.Int("gpu"), ShmSize: clicontext.Int("shm-size"), EnvironmentName: name, diff --git a/pkg/app/up.go b/pkg/app/up.go index b2078a76b..3e81cf24e 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -90,6 +90,21 @@ var CommandUp = &cli.Command{ Usage: "Configure the shared memory size (megabyte)", Value: 2048, }, + &cli.StringFlag{ + Name: "cpus", + Usage: "Request CPU resources (number of cores), such as 0.5, 1, 2", + Value: "", + }, + &cli.StringFlag{ + Name: "cpu-set", + Usage: "Limit the specific CPUs or cores the environment can use, such as `0-3`, `1,3`", + Value: "", + }, + &cli.StringFlag{ + Name: "memory", + Usage: "Request Memory, such as 512Mb, 2Gb", + Value: "", + }, &cli.BoolFlag{ Name: "detach", Usage: "Detach from the container", @@ -205,7 +220,14 @@ func up(clicontext *cli.Context) error { Timeout: clicontext.Duration("timeout"), SshdHost: clicontext.String("host"), ShmSize: clicontext.Int("shm-size"), + NumCPU: clicontext.String("cpus"), + NumMem: clicontext.String("memory"), + CPUSet: clicontext.String("cpu-set"), } + if len(startOptions.NumCPU) > 0 && len(startOptions.CPUSet) > 0 { + return errors.New("`--cpus` and `--cpu-set` are mutually exclusive") + } + if c.Runner != types.RunnerTypeEnvdServer { startOptions.EngineSource = envd.EngineSource{ DockerSource: &envd.DockerSource{ diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 648e5108b..3bfa61404 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -19,6 +19,7 @@ import ( "encoding/json" "fmt" "path/filepath" + "runtime" "strconv" "strings" "time" @@ -30,6 +31,7 @@ import ( "github.com/docker/docker/api/types/mount" "github.com/docker/docker/client" "github.com/docker/go-connections/nat" + dockerutils "github.com/docker/go-units" "github.com/sirupsen/logrus" envdconfig "github.com/tensorchord/envd/pkg/config" @@ -348,6 +350,10 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes "tag": so.Image, "environment": so.EnvironmentName, "gpu": so.NumGPU, + "shm": so.ShmSize, + "cpu": so.NumCPU, + "cpu-set": so.CPUSet, + "memory": so.NumMem, "build-context": so.BuildContext, }) @@ -459,6 +465,30 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes if so.ShmSize > 0 { hostConfig.ShmSize = int64(so.ShmSize) * 1024 * 1024 } + // resource + if len(so.NumCPU) > 0 { + cpu, err := strconv.ParseFloat(so.NumCPU, 64) + if err != nil { + logger.Infof("parse `cpu` error: %v, ignore this argument", err) + } else if runtime.GOOS == "windows" { + hostConfig.NanoCPUs = int64(cpu * 10e9) + } else { + // refer to https://docs.docker.com/config/containers/resource_constraints/#configure-the-default-cfs-scheduler + // CPU quota and CPU period only work for UNIX platform + hostConfig.CPUQuota = int64(cpu * 10e5) + } + } + if len(so.CPUSet) > 0 { + hostConfig.CpusetCpus = so.CPUSet + } + if len(so.NumMem) > 0 { + mem, err := dockerutils.RAMInBytes(so.NumMem) + if err != nil { + logger.Infof("parse `memory` error: %v, ignore this argument", err) + } else { + hostConfig.Memory = mem + } + } // Configure ssh port. natPort := nat.Port(fmt.Sprintf("%d/tcp", envdconfig.SSHPortInContainer)) diff --git a/pkg/envd/types.go b/pkg/envd/types.go index 6fe5ddbad..989665900 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -40,6 +40,7 @@ type StartOptions struct { BuildContext string NumGPU int NumCPU string + CPUSet string NumMem string Timeout time.Duration ShmSize int From 0f21639612f0c438bcd57f07de273858f5a70d81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 09:48:25 +0800 Subject: [PATCH 031/355] chore(deps): bump github.com/containerd/containerd from 1.6.17 to 1.6.18 (#1481) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.6.17 to 1.6.18. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.6.17...v1.6.18) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index bfca51114..d99503518 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/charmbracelet/lipgloss v0.6.0 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 - github.com/containerd/containerd v1.6.17 + github.com/containerd/containerd v1.6.18 github.com/creack/pty v1.1.18 github.com/docker/cli v23.0.0-rc.3+incompatible github.com/docker/docker v23.0.0-rc.1+incompatible diff --git a/go.sum b/go.sum index 6751114e6..61c19b4e3 100644 --- a/go.sum +++ b/go.sum @@ -117,8 +117,8 @@ github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARu github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.6.17 h1:XDnJIeJW0cLf6v7/+N+6L9kGrChHeXekZp2VHu6OpiY= -github.com/containerd/containerd v1.6.17/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= +github.com/containerd/containerd v1.6.18 h1:qZbsLvmyu+Vlty0/Ex5xc0z2YtKpIsb5n45mAMI+2Ns= +github.com/containerd/containerd v1.6.18/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= From 4be022e85a2acd40a4183db89d9171650a80b1b6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 09:50:54 +0800 Subject: [PATCH 032/355] docs: updated CHANGELOG.md (#1487) Signed-off-by: GitHub Co-authored-by: kemingy --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae08da8be..b1eeb91ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## v0.3.13 (2023-02-20) + + * [0f21639](https://github.com/tensorchord/envd/commit/0f21639612f0c438bcd57f07de273858f5a70d81) chore(deps): bump github.com/containerd/containerd from 1.6.17 to 1.6.18 (#1481) + * [53ba50e](https://github.com/tensorchord/envd/commit/53ba50e06fd1af5026a59c88d3886b5c8ca059de) feat: support CPU and memory limit for docker runner (#1486) + * [b0143c3](https://github.com/tensorchord/envd/commit/b0143c34b2d868c5f2e2c7b231b5ededca0f29ea) feat: Allow buildkit timeout to be configurable (#1482) + * [8adb6a9](https://github.com/tensorchord/envd/commit/8adb6a9a0ad7ebea21fd92bdd80883bb71291938) Julia MNIST classification e2e test example (#1484) + * [7d8fc46](https://github.com/tensorchord/envd/commit/7d8fc46a6d311b51ede996ca2d8709d1335780bc) fix: add revive and address indent-error-flow issues (#1480) + +### Contributors + + * Keming + * Yuan Tang + * Zhizhen He + * dependabot[bot] + * x0oo0x + ## v0.3.12 (2023-02-14) * [0929661](https://github.com/tensorchord/envd/commit/09296619283ce568866df414bf26db3bda24d9c7) feat: support buildx moby worker in docker 23.0.0 onward to accelerating building process by skipping docker load (#1472) From 3919cb21a19c423d77943a98f0a1ee29e0f820b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 11:15:59 +0800 Subject: [PATCH 033/355] chore(deps): bump golang.org/x/net from 0.6.0 to 0.7.0 (#1488) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.6.0 to 0.7.0. - [Release notes](https://github.com/golang/net/releases) - [Commits](https://github.com/golang/net/compare/v0.6.0...v0.7.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d99503518..a26a3ed78 100644 --- a/go.mod +++ b/go.mod @@ -125,7 +125,7 @@ require ( go.opentelemetry.io/otel/sdk v1.4.1 // indirect go.opentelemetry.io/otel/trace v1.4.1 // indirect go.opentelemetry.io/proto/otlp v0.12.0 // indirect - golang.org/x/net v0.6.0 // indirect + golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect diff --git a/go.sum b/go.sum index 61c19b4e3..22d1b96ee 100644 --- a/go.sum +++ b/go.sum @@ -747,8 +747,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.6.0 h1:L4ZwwTvKW9gr0ZMS1yrHD9GZhIuVjOBBnaKH+SPQK0Q= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 17e133c9680a4e9396dfaf8b3622828d6655a187 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 14:19:15 +0800 Subject: [PATCH 034/355] chore(deps): bump github.com/onsi/gomega from 1.26.0 to 1.27.1 (#1489) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.26.0 to 1.27.1. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.26.0...v1.27.1) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index a26a3ed78..f0a0e8b3e 100644 --- a/go.mod +++ b/go.mod @@ -25,8 +25,8 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.8.0 - github.com/onsi/gomega v1.26.0 + github.com/onsi/ginkgo/v2 v2.8.1 + github.com/onsi/gomega v1.27.1 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 22d1b96ee..2612687fe 100644 --- a/go.sum +++ b/go.sum @@ -469,11 +469,11 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.8.0 h1:pAM+oBNPrpXRs+E/8spkeGx9QgekbRVyr74EUvRVOUI= -github.com/onsi/ginkgo/v2 v2.8.0/go.mod h1:6JsQiECmxCa3V5st74AL/AmsV482EDdVrGaVW6z3oYU= +github.com/onsi/ginkgo/v2 v2.8.1 h1:xFTEVwOFa1D/Ty24Ws1npBWkDYEV9BqZrsDxVrVkrrU= +github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= -github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754= +github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From 6bf7d5ba68772759904ba434e0394df2d9d08f5f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Feb 2023 14:19:29 +0800 Subject: [PATCH 035/355] chore(deps): bump github.com/urfave/cli/v2 from 2.24.3 to 2.24.4 (#1490) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.24.3 to 2.24.4. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.24.3...v2.24.4) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index f0a0e8b3e..32a69de86 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/tensorchord/envd-server v0.0.25 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.24.3 + github.com/urfave/cli/v2 v2.24.4 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.6.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 2612687fe..82abc6fe5 100644 --- a/go.sum +++ b/go.sum @@ -598,8 +598,8 @@ github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljT github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.24.3 h1:7Q1w8VN8yE0MJEHP06bv89PjYsN4IHWED2s1v/Zlfm0= -github.com/urfave/cli/v2 v2.24.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.24.4 h1:0gyJJEBYtCV87zI/x2nZCPyDxD51K6xM8SkwjHFCNEU= +github.com/urfave/cli/v2 v2.24.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From dc57256211e3a7b714ca5185254e66f5a979e02a Mon Sep 17 00:00:00 2001 From: Zhizhen He Date: Mon, 20 Feb 2023 19:20:21 +0800 Subject: [PATCH 036/355] feat: add typos to pre-commit and GitHub action (#1493) * feat: add typos to pre-commit and GitHub action Signed-off-by: Zhizhen He * fix: fix existing typos Signed-off-by: Zhizhen He * chore: add reference Signed-off-by: Zhizhen He --------- Signed-off-by: Zhizhen He --- .github/workflows/CI.yml | 10 ++++++++++ .pre-commit-config.yaml | 4 ++++ README.md | 2 +- docs/images/after.svg | 2 +- docs/images/before.svg | 2 +- .../20220826-image-runtime-redistributed-metadata.md | 12 ++++++------ envd/api/v1/config.py | 2 +- examples/stable-diffusion/build.envd | 2 +- pkg/driver/docker/docker_test.go | 2 +- pkg/lang/frontend/starlark/v0/interpreter.go | 2 +- pkg/lang/frontend/starlark/v1/interpreter.go | 2 +- pkg/lang/ir/v0/supervisor.go | 2 +- pkg/lang/ir/v1/supervisor.go | 2 +- typos.toml | 5 +++++ 14 files changed, 35 insertions(+), 16 deletions(-) create mode 100644 typos.toml diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0e3ead6f7..4f7bd4068 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -21,6 +21,16 @@ concurrency: cancel-in-progress: true jobs: + typos-check: + name: Spell Check with Typos + runs-on: ubuntu-latest + steps: + - name: Checkout Actions Repository + uses: actions/checkout@v3 + - name: Check spelling with custom config file + uses: crate-ci/typos@v1.13.10 + with: + config: ./typos.toml lint: name: lint runs-on: ubuntu-latest diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 51f916370..9a27201df 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -4,3 +4,7 @@ repos: hooks: - id: golangci-lint args: [--config=.golangci.yml, --timeout=3m] + - repo: https://github.com/crate-ci/typos + rev: v1.13.10 + hooks: + - id: typos diff --git a/README.md b/README.md index f0fe6667e..3460d45a2 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ trackgit-views Python Version all-contributors -envd package donwloads +envd package downloads continuous integration Coverage Status

diff --git a/docs/images/after.svg b/docs/images/after.svg index 5741ce13d..f53ddb822 100644 --- a/docs/images/after.svg +++ b/docs/images/after.svg @@ -1,3 +1,3 @@ -
Data Scientists
Data Scientis...
Deliver
Deliver
write build.envd
write build....
envd up and develop
envd up and...
git clone
git clone
configure tools
configure to...
build and install system deps
build and instal...
update python deps
update pytho...
debug datasets
debug datase...
configure model storage
configure model...
trial and error
trial and er...
git push
git push
git clone
git clone
write dockefiles
write dockef...
pipeline the data
pipeline the...
training
training
save model
save model
Text is not SVG - cannot display
\ No newline at end of file +
Data Scientists
Data Scientists...
Deliver
Deliver
write build.envd
write build....
envd up and develop
envd up and...
git clone
git clone
configure tools
configure to...
build and install system deps
build and instal...
update python deps
update pytho...
debug datasets
debug datase...
configure model storage
configure model...
trial and error
trial and er...
git push
git push
git clone
git clone
write dockefiles
write dockef...
pipeline the data
pipeline the...
training
training
save model
save model
Text is not SVG - cannot display
diff --git a/docs/images/before.svg b/docs/images/before.svg index 622b0e3a5..f82d5d099 100644 --- a/docs/images/before.svg +++ b/docs/images/before.svg @@ -1,3 +1,3 @@ -
build and install system deps
build and instal...
update python deps
update pytho...
debug datasets
debug datase...
trial and error
trial and error
Data Scientists
Data Scientis...
write dockefiles
write dockef...
training
training
save model
save model
Deliver
Deliver
git clone
git clone
configure tools
configure to...
pipeline the data
pipeline the...
configure model storage
configure model...
Text is not SVG - cannot display
\ No newline at end of file +
build and install system deps
build and instal...
update python deps
update pytho...
debug datasets
debug datase...
trial and error
trial and error
Data Scientists
Data Scientists...
write dockefiles
write dockef...
training
training
save model
save model
Deliver
Deliver
git clone
git clone
configure tools
configure to...
pipeline the data
pipeline the...
configure model storage
configure model...
Text is not SVG - cannot display
diff --git a/docs/proposals/20220826-image-runtime-redistributed-metadata.md b/docs/proposals/20220826-image-runtime-redistributed-metadata.md index 7df46dc59..8d8d2c30d 100644 --- a/docs/proposals/20220826-image-runtime-redistributed-metadata.md +++ b/docs/proposals/20220826-image-runtime-redistributed-metadata.md @@ -4,15 +4,15 @@ Authors: ## Summary -The `envd` would add (runing graph metadata)[https://github.com/tensorchord/envd/blob/630ada172bdf876c3b749329fdbe284c108051f2/pkg/lang/ir/types.go#L70] would be encoded into a ASCII string and added to be image(OCI Spec) as a config. +The `envd` would add (running graph metadata)[https://github.com/tensorchord/envd/blob/630ada172bdf876c3b749329fdbe284c108051f2/pkg/lang/ir/types.go#L70] would be encoded into a ASCII string and added to be image(OCI Spec) as a config. we named the above mentioned encoded config `Envd Runtime Graph Label` ## Motivation -This proposal is part of effort to define what the artifact `envd` delivery and decoupling the phases of build and runing. It will be friendly for running a envd environment even at the absence of `build.env`. +This proposal is part of effort to define what the artifact `envd` delivery and decoupling the phases of build and running. It will be friendly for running a envd environment even at the absence of `build.env`. -the concept of `running context` is a also needed as addition of `build contxt` for example: +the concept of `running context` is a also needed as addition of `build context` for example: - An engineer build a easy-to-use env for his/her interns for the quick use of company tools. - Kubernetes remote runtime support in the future. @@ -26,12 +26,12 @@ the concept of `running context` is a also needed as addition of `build contxt` ## Implementations There are two parts of runtime configuration that can be used in envd. -- OCI sepecifications specific: +- OCI specifications specific: - ExposedPort - Entrypoint - Env - Cmd -- Custome Labels +- Custom Labels For some parts of runtime configuration, we could use the OCI part such as environment variables. We still need to deal with extra parts such as port bindings which not covered by the OCI spec. @@ -51,4 +51,4 @@ we use the following labels: - ai.tensorchord.envd.runtimeGraph.version - ai.tensorchord.envd.runtimeGraph.Daemon -- ai.tensorchord.envd.runtimeGraph.Expose \ No newline at end of file +- ai.tensorchord.envd.runtimeGraph.Expose diff --git a/envd/api/v1/config.py b/envd/api/v1/config.py index 43a18a477..e088c91dc 100644 --- a/envd/api/v1/config.py +++ b/envd/api/v1/config.py @@ -155,7 +155,7 @@ def repo(url: str, description: str): def owner(uid: int, gid: int): - """Configure uid:gid as the environmen owner. + """Configure uid:gid as the environment owner. This can also be achieved by using flag `envd --owner uid:gid build` or environment variable `ENVD_BUILD_OWNER=uid:gid envd build` diff --git a/examples/stable-diffusion/build.envd b/examples/stable-diffusion/build.envd index 37fadf56b..68d116870 100644 --- a/examples/stable-diffusion/build.envd +++ b/examples/stable-diffusion/build.envd @@ -8,7 +8,7 @@ def build(): "diffusers", ] ) - # if you need run in cuda enviroment, you can add this line below, change cuda and cudnn version to your owner + # if you need run in cuda environment, you can add this line below, change cuda and cudnn version to your owner install.cuda(version="11.2.2", cudnn="8") runtime.mount( host_path="~/.cache/huggingface", envd_path="/home/envd/.cache/huggingface" diff --git a/pkg/driver/docker/docker_test.go b/pkg/driver/docker/docker_test.go index a75adba9d..2fc26f690 100644 --- a/pkg/driver/docker/docker_test.go +++ b/pkg/driver/docker/docker_test.go @@ -22,7 +22,7 @@ import ( ) var _ = Describe("docker", func() { - When("given the a lowcase tag", func() { + When("given the a lowercase tag", func() { It("should return the tag identically", func() { tag := "test:test" newTag, err := NormalizeName(tag) diff --git a/pkg/lang/frontend/starlark/v0/interpreter.go b/pkg/lang/frontend/starlark/v0/interpreter.go index b4fbbf457..fe95b4154 100644 --- a/pkg/lang/frontend/starlark/v0/interpreter.go +++ b/pkg/lang/frontend/starlark/v0/interpreter.go @@ -153,7 +153,7 @@ func (s *generalInterpreter) loadGitModule(thread *starlark.Thread, path string) } func (s generalInterpreter) ExecFile(filename string, funcname string) (interface{}, error) { - logrus.WithField("filename", filename).Debug("interprete the file") + logrus.WithField("filename", filename).Debug("interpret the file") thread := s.NewThread(filename) globals, err := s.exec(thread, filename) if err != nil { diff --git a/pkg/lang/frontend/starlark/v1/interpreter.go b/pkg/lang/frontend/starlark/v1/interpreter.go index ca403edd8..09c63ec74 100644 --- a/pkg/lang/frontend/starlark/v1/interpreter.go +++ b/pkg/lang/frontend/starlark/v1/interpreter.go @@ -153,7 +153,7 @@ func (s *generalInterpreter) loadGitModule(thread *starlark.Thread, path string) } func (s generalInterpreter) ExecFile(filename string, funcname string) (interface{}, error) { - logrus.WithField("filename", filename).Debug("interprete the file") + logrus.WithField("filename", filename).Debug("interpret the file") thread := s.NewThread(filename) globals, err := s.exec(thread, filename) if err != nil { diff --git a/pkg/lang/ir/v0/supervisor.go b/pkg/lang/ir/v0/supervisor.go index 1e492f40f..7b3a0f038 100644 --- a/pkg/lang/ir/v0/supervisor.go +++ b/pkg/lang/ir/v0/supervisor.go @@ -60,7 +60,7 @@ func (g generalGraph) installHorust(root llb.State) llb.State { File(llb.Mkdir(types.HorustLogDir, 0777, llb.WithParents(true)), llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)). Run(llb.Shlexf(`sudo chmod 777 %s`, types.HorustLogDir), - llb.WithCustomName("[internal] change dirctory permission for logging")) + llb.WithCustomName("[internal] change directory permission for logging")) return horust.Root() } diff --git a/pkg/lang/ir/v1/supervisor.go b/pkg/lang/ir/v1/supervisor.go index bc7c7284d..2a54d864e 100644 --- a/pkg/lang/ir/v1/supervisor.go +++ b/pkg/lang/ir/v1/supervisor.go @@ -60,7 +60,7 @@ func (g generalGraph) installHorust(root llb.State) llb.State { File(llb.Mkdir(types.HorustLogDir, 0777, llb.WithParents(true)), llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)). Run(llb.Shlexf(`sudo chmod 777 %s`, types.HorustLogDir), - llb.WithCustomName("[internal] change dirctory permission for logging")) + llb.WithCustomName("[internal] change directory permission for logging")) return horust.Root() } diff --git a/typos.toml b/typos.toml new file mode 100644 index 000000000..7ca451009 --- /dev/null +++ b/typos.toml @@ -0,0 +1,5 @@ +# See https://github.com/crate-ci/typos/blob/master/docs/reference.md to configure typos +[files] +extend-exclude = ["CHANGELOG.md"] +[default.extend-words] +iterm = "iterm" From f19289e1646ed724e1b32b26c527324c95773e80 Mon Sep 17 00:00:00 2001 From: Nadeshiko Manju Date: Tue, 21 Feb 2023 10:33:06 +0800 Subject: [PATCH 037/355] misc: Use GitHub Issue Form instead of markdown template (#1494) Signed-off-by: Manjusaka --- .github/ISSUE_TEMPLATE/bug_report.md | 21 -------- .github/ISSUE_TEMPLATE/bug_report.yaml | 56 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature-request.md | 15 ------ .github/ISSUE_TEMPLATE/feature_request.yaml | 31 ++++++++++++ 4 files changed, 87 insertions(+), 36 deletions(-) delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yaml delete mode 100644 .github/ISSUE_TEMPLATE/feature-request.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yaml diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 4f9eccc40..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve -title: 'bug: ' -labels: "type/bug \U0001F41B" - ---- - -## Description - -## Reproduction - -## Additional Info - -<!-- It will be very helpful if you can provide the version info by running the command `envd version`. --> - ---- -<!-- Issue Author: Don't delete this message to encourage other users to support your issue! --> -**Message from the maintainers**: - -Impacted by this bug? Give it a 👍. We prioritise the issues with the most 👍. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml new file mode 100644 index 000000000..efb9f47c6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -0,0 +1,56 @@ +name: Bug Report +description: Bug report for envd +labels: ["type/bug \U0001F41B"] +title: "bug: <title>" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this bug report! + - type: checkboxes + attributes: + label: Are you use the envd server? + description: Please check if you are using the envd server. + options: + - label: Yes, I am using the envd server. + - label: No, I am not using the envd server. + - type: textarea + attributes: + label: Describe the bug + description: A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + attributes: + label: To Reproduce + description: Steps to reproduce the behavior. + validations: + required: true + - type: textarea + attributes: + label: Expected behavior + description: A clear and concise description of what you expected to happen. + validations: + required: false + - type: textarea + attributes: + label: The `docker info` output + description: The output of `docker info` command. + validations: + required: true + - type: textarea + attributes: + label: The `envd version` output + description: The output of `envd version` command. + validations: + required: true + - type: textarea + attributes: + label: Additional context + description: Add any other context about the problem here. + validations: + required: false + - type: markdown + attributes: + value: | + Impacted by this bug? Give it a 👍. We prioritise the issues with the most 👍. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md deleted file mode 100644 index 3c7b935ea..000000000 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project -title: 'feat: <title>' -labels: "type/feature \U0001F4A1" - ---- - -## Description - ---- -<!-- Issue Author: Don't delete this message to encourage other users to support your issue! --> -**Message from the maintainers**: - -Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml new file mode 100644 index 000000000..d12a7ccc2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -0,0 +1,31 @@ +name: Feature Request +description: Feature request for envd +labels: ["type/feature \U0001F4A1"] +title: "feat: <title>" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out this feature request! + - type: textarea + attributes: + label: Describe the feature + description: A clear and concise description of what the feature is. + validations: + required: true + - type: textarea + attributes: + label: Why do you need this feature? + description: A clear and concise description of why you need this feature. + validations: + required: false + - type: textarea + attributes: + label: Additional context + description: Add any other context about the problem here. + validations: + required: false + - type: markdown + attributes: + value: | + Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍. \ No newline at end of file From 332c70c7ff7ddd472f4e602e337f44c7f925eb8d Mon Sep 17 00:00:00 2001 From: Yuan Tang <terrytangyuan@gmail.com> Date: Mon, 20 Feb 2023 21:40:03 -0500 Subject: [PATCH 038/355] chore: Upgrade Go to v1.19 (#1496) Signed-off-by: Yuan Tang <terrytangyuan@gmail.com> --- .github/workflows/CI.yml | 16 ++++++++-------- .github/workflows/nightly.yml | 20 ++++++++++---------- .github/workflows/release.yml | 2 +- go.mod | 2 +- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 4f7bd4068..d14f4b9e1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -37,7 +37,7 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - uses: actions/checkout@v3 - name: Cache Go modules uses: actions/cache@preview @@ -74,7 +74,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -110,7 +110,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -146,7 +146,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -182,7 +182,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -218,7 +218,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -254,7 +254,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -282,7 +282,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Install bins run: | go install github.com/mattn/goveralls@latest diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 982515b86..46f9fd034 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - uses: actions/checkout@v3 - name: Cache Go modules uses: actions/cache@preview @@ -56,7 +56,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -93,7 +93,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -130,7 +130,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -165,7 +165,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Install bins run: | go install github.com/mattn/goveralls@latest @@ -204,7 +204,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -232,7 +232,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -269,7 +269,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -306,7 +306,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: @@ -343,7 +343,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Cache Go modules uses: actions/cache@preview with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 58fad9bcc..3ab8682c0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v3 with: - go-version: 1.18 + go-version: 1.19 - name: Docker Login uses: docker/login-action@v2 with: diff --git a/go.mod b/go.mod index 32a69de86..2327568ba 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/tensorchord/envd -go 1.18 +go 1.19 require ( github.com/Pallinder/go-randomdata v1.2.0 From a4f7a5ca824d2ce375b01fb61bfe3c1e48aef3b2 Mon Sep 17 00:00:00 2001 From: tison <wander4096@gmail.com> Date: Wed, 22 Feb 2023 16:14:54 +0800 Subject: [PATCH 039/355] build: FQN mockgen bin path (#1499) mockgen is not always on PATH. Signed-off-by: tison <wander4096@gmail.com> --- Makefile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 93bfad056..73eb6eba3 100644 --- a/Makefile +++ b/Makefile @@ -83,6 +83,7 @@ GOPATH ?= $(shell go env GOPATH) GOROOT ?= $(shell go env GOROOT) BIN_DIR := $(GOPATH)/bin GOLANGCI_LINT := $(BIN_DIR)/golangci-lint +MOCKGEN := $(BIN_DIR)/mockgen # Default golang flags used in build and test # -mod=vendor: force go to use the vendor files instead of using the `$GOPATH/pkg/mod` @@ -152,9 +153,9 @@ dev: clean build-local ## install envd command for local debug @pip3 install --force-reinstall dist/*.whl generate: mockgen-install ## Generate mocks - @mockgen -source pkg/buildkitd/buildkitd.go -destination pkg/buildkitd/mock/mock.go -package mock - @mockgen -source pkg/lang/frontend/starlark/interpreter.go -destination pkg/lang/frontend/starlark/mock/mock.go -package mock - @mockgen -source pkg/progress/compileui/display.go -destination pkg/progress/compileui/mock/mock.go -package mock + @$(MOCKGEN) -source pkg/buildkitd/buildkitd.go -destination pkg/buildkitd/mock/mock.go -package mock + @$(MOCKGEN) -source pkg/lang/frontend/starlark/interpreter.go -destination pkg/lang/frontend/starlark/mock/mock.go -package mock + @$(MOCKGEN) -source pkg/progress/compileui/display.go -destination pkg/progress/compileui/mock/mock.go -package mock # It is used by vscode to attach into the process. debug-local: From fa036bc3155942463cf900257d558887aa9ebc7d Mon Sep 17 00:00:00 2001 From: tison <wander4096@gmail.com> Date: Wed, 22 Feb 2023 19:39:46 +0800 Subject: [PATCH 040/355] build: Reduce redundant output (#1500) * fix: Default manager has auto build type Signed-off-by: tison <wander4096@gmail.com> * Revert "fix: Default manager has auto build type" This reverts commit 656fc6eb19e9ae036b9243e1cd2884dec5d4c32b. Signed-off-by: tison <wander4096@gmail.com> * build: Reduce redundant output Signed-off-by: tison <wander4096@gmail.com> --------- Signed-off-by: tison <wander4096@gmail.com> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 73eb6eba3..e35e30637 100644 --- a/Makefile +++ b/Makefile @@ -102,7 +102,7 @@ export GOFLAGS ?= -count=1 build-release: @for target in $(TARGETS); do \ - CGO_ENABLED=$(CGO_ENABLED) go build -trimpath -v -o $(OUTPUT_DIR)/$${target} \ + CGO_ENABLED=$(CGO_ENABLED) go build -trimpath -o $(OUTPUT_DIR)/$${target} \ -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ -X $(ROOT)/pkg/version.buildDate=$(BUILD_DATE) \ -X $(ROOT)/pkg/version.gitCommit=$(GIT_COMMIT) \ From 6cbe5580aa223d3ef688094b449c70b5e9b65710 Mon Sep 17 00:00:00 2001 From: tison <wander4096@gmail.com> Date: Wed, 22 Feb 2023 20:44:11 +0800 Subject: [PATCH 041/355] build: Reduce more redundant output (#1502) * build: Reduce more redundant output Signed-off-by: tison <wander4096@gmail.com> * prompt on local build Signed-off-by: tison <wander4096@gmail.com> --------- Signed-off-by: tison <wander4096@gmail.com> --- Makefile | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index e35e30637..04e854a95 100644 --- a/Makefile +++ b/Makefile @@ -134,16 +134,18 @@ addlicense-install: go install github.com/google/addlicense@latest build-local: - @for target in $(TARGETS); do \ - CGO_ENABLED=$(CGO_ENABLED) go build -trimpath -v -o $(OUTPUT_DIR)/$${target} \ + @for target in $(TARGETS); do \ + echo "Building $${target} ..."; \ + CGO_ENABLED=$(CGO_ENABLED) go build -trimpath -o $(OUTPUT_DIR)/$${target} \ -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ -X $(ROOT)/pkg/version.buildDate=$(BUILD_DATE) \ -X $(ROOT)/pkg/version.gitCommit=$(GIT_COMMIT) \ - -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ + -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ -X $(ROOT)/pkg/version.gitTag=$(GIT_LATEST_TAG) \ -X $(ROOT)/pkg/version.developmentFlag=true" \ - $(CMD_DIR)/$${target}; \ + $(CMD_DIR)/$${target}; \ done + @echo "Build envd successfully!" pypi-build: clean @python3 setup.py sdist bdist_wheel From b641b0c56b9925ee2024093ec6bd7450fca40b4d Mon Sep 17 00:00:00 2001 From: x0oo0x <richard97@g.ucla.edu> Date: Fri, 24 Feb 2023 01:22:05 -0500 Subject: [PATCH 042/355] feat: Support installing multi-language environment at the same time (#1501) * support installing multi-language environment Signed-off-by: Botong Ou <richard97@g.ucla.edu> * support installing multi-language environment in parallel Signed-off-by: Botong Ou <richard97@g.ucla.edu> * support installing multi-language environment in parallel Signed-off-by: Botong Ou <richard97@g.ucla.edu> * support installing multi-language environment in parallel Signed-off-by: Botong Ou <richard97@g.ucla.edu> * support installing multi-language environment in parallel Signed-off-by: Botong Ou <richard97@g.ucla.edu> --------- Signed-off-by: Botong Ou <richard97@g.ucla.edu> --- pkg/lang/ir/v1/editor.go | 10 +++--- pkg/lang/ir/v1/interface.go | 12 +++---- pkg/lang/ir/v1/python.go | 11 ++++-- pkg/lang/ir/v1/system.go | 70 ++++++++++++++++++++----------------- pkg/lang/ir/v1/types.go | 2 +- 5 files changed, 57 insertions(+), 48 deletions(-) diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index 976cb47cf..a79556778 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -65,12 +65,12 @@ func (g *generalGraph) compileJupyter() error { } g.PyPIPackages = append(g.PyPIPackages, []string{"jupyter"}) - switch g.Language.Name { - case "python": - return nil - default: - return errors.Newf("Jupyter is not supported in %s yet", g.Language.Name) + for _, language := range g.Languages { + if language.Name == "python" { + return nil + } } + return errors.Newf("Jupyter is not supported in other languages yet") } func (g generalGraph) generateJupyterCommand(workingDir string) []string { diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index 9e4ba594e..ba94efffe 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -43,10 +43,10 @@ func Python(version string) error { } g := DefaultGraph.(*generalGraph) - g.Language = ir.Language{ + g.Languages = append(g.Languages, ir.Language{ Name: "python", Version: &version, - } + }) return nil } @@ -61,17 +61,17 @@ func Conda(mamba bool) { func RLang() { g := DefaultGraph.(*generalGraph) - g.Language = ir.Language{ + g.Languages = append(g.Languages, ir.Language{ Name: "r", - } + }) } func Julia() { g := DefaultGraph.(*generalGraph) - g.Language = ir.Language{ + g.Languages = append(g.Languages, ir.Language{ Name: "julia", - } + }) } func PyPIPackage(deps []string, requirementsFile string, wheels []string) error { diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 3a7df1b8b..2f1612baf 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -68,11 +68,16 @@ func (g *generalGraph) installPython(root llb.State) (llb.State, error) { } func (g generalGraph) getAppropriatePythonVersion() (string, error) { - if g.Language.Version == nil { - return PythonVersionDefault, nil + var version string + for _, language := range g.Languages { + if language.Name == "python" { + if language.Version == nil { + return PythonVersionDefault, nil + } + version = *language.Version + } } - version := *g.Language.Version if version == "3" || version == "" { return PythonVersionDefault, nil } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 8e33d164d..2afd21211 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -229,44 +229,51 @@ func (g *generalGraph) compileExtraSource(root llb.State) (llb.State, error) { } func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { + langs := []llb.State{root} lang := root var err error - switch g.Language.Name { - case "python": - lang, err = g.installPython(root) - case "r": - rSrc := g.compileRLang(root) - lang = g.installRLang(rSrc) - case "julia": - lang = g.installJulia(root) + for _, language := range g.Languages { + switch language.Name { + case "python": + lang, err = g.installPython(root) + case "r": + rSrc := g.compileRLang(root) + lang = g.installRLang(rSrc) + case "julia": + lang = g.installJulia(root) + } + langs = append(langs, llb.Diff(root, lang, llb.WithCustomNamef("[internal] build %s environments", language.Name))) } - - return lang, err + return llb.Merge(langs, llb.WithCustomName("[internal] build all language environments")), err } func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { + packs := []llb.State{root} pack := root - switch g.Language.Name { - case "python": - index := g.compilePyPIIndex(root) - pypi := g.compilePyPIPackages(index) - if g.CondaConfig == nil { - pack = pypi - } else { - channel := g.compileCondaChannel(root) - conda := g.compileCondaPackages(channel) - pack = llb.Merge([]llb.State{ - root, - llb.Diff(root, pypi, llb.WithCustomName("[internal] PyPI packages")), - llb.Diff(root, conda, llb.WithCustomName("[internal] conda packages")), - }, llb.WithCustomName("[internal] Python packages")) + for _, language := range g.Languages { + switch language.Name { + case "python": + index := g.compilePyPIIndex(root) + pypi := g.compilePyPIPackages(index) + if g.CondaConfig == nil { + pack = pypi + } else { + channel := g.compileCondaChannel(root) + conda := g.compileCondaPackages(channel) + pack = llb.Merge([]llb.State{ + root, + llb.Diff(root, pypi, llb.WithCustomName("[internal] PyPI packages")), + llb.Diff(root, conda, llb.WithCustomName("[internal] conda packages")), + }, llb.WithCustomName("[internal] Python packages")) + } + case "r": + pack = g.installRPackages(root) + case "julia": + pack = g.installJuliaPackages(root) } - case "r": - pack = g.installRPackages(root) - case "julia": - pack = g.installJuliaPackages(root) + packs = append(packs, llb.Diff(root, pack, llb.WithCustomNamef("[internal] install %s's packages", language.Name))) } - return pack + return llb.Merge(packs, llb.WithCustomName("[internal] install packages for all language environments")) } func (g *generalGraph) compileDevPackages(root llb.State) llb.State { @@ -313,11 +320,8 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { logger := logrus.WithFields(logrus.Fields{ "image": g.Image, - "language": g.Language.Name, + "language": g.Languages, }) - if g.Language.Version != nil { - logger = logger.WithField("version", *g.Language.Version) - } logger.Debug("compile base image") // Fix https://github.com/tensorchord/envd/issues/1147. diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 225df201a..eb22d639b 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -28,7 +28,7 @@ type generalGraph struct { uid int `default:"-1"` gid int `default:"-1"` - ir.Language + Languages []ir.Language EnvdSyntaxVersion string Image string User string From 484a45206aa0a03bd9307cb5dd73167d69b069e3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Feb 2023 16:01:10 +0800 Subject: [PATCH 043/355] chore(deps): bump crate-ci/typos from 1.13.10 to 1.13.12 (#1504) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.13.10 to 1.13.12. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.13.10...v1.13.12) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index d14f4b9e1..345c95cc7 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.13.10 + uses: crate-ci/typos@v1.13.12 with: config: ./typos.toml lint: From c1651384a0cee0840352c0813b157ff31046dc45 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 09:20:30 +0800 Subject: [PATCH 044/355] chore(deps): bump github.com/tensorchord/envd-server from 0.0.25 to 0.0.27 (#1505) chore(deps): bump github.com/tensorchord/envd-server Bumps [github.com/tensorchord/envd-server](https://github.com/tensorchord/envd-server) from 0.0.25 to 0.0.27. - [Release notes](https://github.com/tensorchord/envd-server/releases) - [Changelog](https://github.com/tensorchord/envd-server/blob/main/.goreleaser.yaml) - [Commits](https://github.com/tensorchord/envd-server/compare/v0.0.25...v0.0.27) --- updated-dependencies: - dependency-name: github.com/tensorchord/envd-server dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 14 +++++++++----- go.sum | 31 +++++++++++++++++++------------ 2 files changed, 28 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 2327568ba..86b7a62f7 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.8.1 + github.com/onsi/ginkgo/v2 v2.8.3 github.com/onsi/gomega v1.27.1 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 @@ -36,7 +36,7 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.1 - github.com/tensorchord/envd-server v0.0.25 + github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.24.4 @@ -44,12 +44,12 @@ require ( golang.org/x/crypto v0.6.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.5.0 - golang.org/x/time v0.1.0 + golang.org/x/time v0.3.0 ) require ( github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/Microsoft/go-winio v0.5.2 // indirect + github.com/Microsoft/go-winio v0.6.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect @@ -71,11 +71,13 @@ require ( github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-cmp v0.5.9 // indirect + github.com/google/pprof v0.0.0-20221203041831-ce31453925ec // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect @@ -83,7 +85,7 @@ require ( github.com/imdario/mergo v0.3.13 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect - github.com/klauspost/compress v1.15.12 // indirect + github.com/klauspost/compress v1.15.15 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect @@ -125,9 +127,11 @@ require ( go.opentelemetry.io/otel/sdk v1.4.1 // indirect go.opentelemetry.io/otel/trace v1.4.1 // indirect go.opentelemetry.io/proto/otlp v0.12.0 // indirect + golang.org/x/mod v0.8.0 // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect + golang.org/x/tools v0.6.0 // indirect google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect google.golang.org/grpc v1.52.0 // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/go.sum b/go.sum index 82abc6fe5..b7e67211f 100644 --- a/go.sum +++ b/go.sum @@ -52,8 +52,8 @@ github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKz github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= -github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= +github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= +github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= github.com/Microsoft/hcsshim v0.9.6 h1:VwnDOgLeoi2du6dAznfmspNqTiwczvjv4K7NxuY9jsY= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= @@ -227,6 +227,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -305,6 +307,8 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20221203041831-ce31453925ec h1:fR20TYVVwhK4O7r7y+McjRYyaTH6/vjwJOajE+XhlzM= +github.com/google/pprof v0.0.0-20221203041831-ce31453925ec/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -365,8 +369,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= -github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= +github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -469,8 +473,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.8.1 h1:xFTEVwOFa1D/Ty24Ws1npBWkDYEV9BqZrsDxVrVkrrU= -github.com/onsi/ginkgo/v2 v2.8.1/go.mod h1:N1/NbDngAFcSLdyZ+/aYTYGSlq9qMCS/cNKGJjy+csc= +github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ= +github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754= github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= @@ -544,7 +548,6 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= -github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -584,8 +587,8 @@ github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tensorchord/envd-server v0.0.25 h1:r9cthgOmhqJl7keetaAFp9h2s7BeHMf+05vMxENkx4w= -github.com/tensorchord/envd-server v0.0.25/go.mod h1:BmXRR/nVGPCtjaTCe7QVH26R4T+FEKbxJa9LGa7o0GA= +github.com/tensorchord/envd-server v0.0.27 h1:zCJn4tQNplW0G2dtC9tWCKVry6ZulXjnN//6gPtPePg= +github.com/tensorchord/envd-server v0.0.27/go.mod h1:z73SMAiAvPo+4mY2xnjxUbJJ0ub1ihbyglPEAOng99I= github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa h1:XOFp/3aBXlqmOFAg3r6e0qQjPnK5I970LilqX+Is1W8= github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa/go.mod h1:AvLEd1LEIl64G2Jpgwo7aVV5lGH0ePcKl0ygGIHNYl8= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= @@ -706,6 +709,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -758,7 +763,7 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= +golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -870,8 +875,8 @@ golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0 h1:xYY+Bajn2a7VBmTM5GikTmnK8ZuX8YgnQCqZpbBNtmA= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -928,6 +933,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 1e1819f0083559cc4998259ae9204089094a0daf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 28 Feb 2023 10:30:10 +0800 Subject: [PATCH 045/355] chore(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#1507) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.1 to 1.8.2. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.8.1...v1.8.2) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 86b7a62f7..4a221c1df 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 - github.com/stretchr/testify v1.8.1 + github.com/stretchr/testify v1.8.2 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f diff --git a/go.sum b/go.sum index b7e67211f..ad52c3f69 100644 --- a/go.sum +++ b/go.sum @@ -582,8 +582,9 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= From 8c23bad4f349a4024ee658c11d0ac056856e0692 Mon Sep 17 00:00:00 2001 From: x0oo0x <richard97@g.ucla.edu> Date: Mon, 27 Feb 2023 23:17:13 -0500 Subject: [PATCH 046/355] e2e MNIST deep learning example for R (#1510) Rlang e2e deeplearning example Signed-off-by: Botong Ou <richard97@g.ucla.edu> --- e2e/v1/docs/rlang_mnist_test.go | 23 +++++++++++ e2e/v1/docs/testdata/rlang_mnist/build.envd | 10 +++++ e2e/v1/docs/testdata/rlang_mnist/mnist.r | 44 +++++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 e2e/v1/docs/rlang_mnist_test.go create mode 100644 e2e/v1/docs/testdata/rlang_mnist/build.envd create mode 100644 e2e/v1/docs/testdata/rlang_mnist/mnist.r diff --git a/e2e/v1/docs/rlang_mnist_test.go b/e2e/v1/docs/rlang_mnist_test.go new file mode 100644 index 000000000..44dba44da --- /dev/null +++ b/e2e/v1/docs/rlang_mnist_test.go @@ -0,0 +1,23 @@ +package docs + +import ( + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + e2e "github.com/tensorchord/envd/e2e/v1" +) + +var _ = Describe("rlang_mnist", Ordered, func() { + exampleName := "rlang_mnist" + testcase := "e2e" + e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) + BeforeAll(e.BuildImage(true)) + BeforeEach(e.RunContainer()) + FIt("execute runtime command `Rscript`", func() { + res, err := e.ExecRuntimeCommand("rlang-mnist") + Expect(err).To(BeNil()) + isNumeric := "TRUE" + Expect(res).To(BeEquivalentTo(isNumeric)) + }) + AfterEach(e.DestroyContainer()) +}) diff --git a/e2e/v1/docs/testdata/rlang_mnist/build.envd b/e2e/v1/docs/testdata/rlang_mnist/build.envd new file mode 100644 index 000000000..1f5f08b30 --- /dev/null +++ b/e2e/v1/docs/testdata/rlang_mnist/build.envd @@ -0,0 +1,10 @@ +# syntax=v1 + + +def build(): + base(dev=True) + install.r_lang() + install.python() + install.r_packages(name=["keras"]) + install.python_packages(name=["tensorflow"]) + runtime.command(commands={"rlang-mnist": "Rscript mnist.r 1> /dev/null"}) diff --git a/e2e/v1/docs/testdata/rlang_mnist/mnist.r b/e2e/v1/docs/testdata/rlang_mnist/mnist.r new file mode 100644 index 000000000..9f8e6bc9d --- /dev/null +++ b/e2e/v1/docs/testdata/rlang_mnist/mnist.r @@ -0,0 +1,44 @@ +Sys.setenv(TF_CPP_MIN_LOG_LEVEL = "3") +library(keras) + +mnist <- dataset_mnist() +x_train <- mnist$train$x +y_train <- mnist$train$y +x_test <- mnist$test$x +y_test <- mnist$test$y + + +# reshape +x_train <- array_reshape(x_train, c(nrow(x_train), 784)) +x_test <- array_reshape(x_test, c(nrow(x_test), 784)) +# rescale +x_train <- x_train / 255 +x_test <- x_test / 255 + +y_train <- to_categorical(y_train, 10) +y_test <- to_categorical(y_test, 10) + +model <- keras_model_sequential() +model %>% + layer_dense(units = 256, activation = 'relu', input_shape = c(784)) %>% + layer_dropout(rate = 0.4) %>% + layer_dense(units = 128, activation = 'relu') %>% + layer_dropout(rate = 0.3) %>% + layer_dense(units = 10, activation = 'softmax') + +model %>% compile( + loss = 'categorical_crossentropy', + optimizer = optimizer_rmsprop(), + metrics = c('accuracy'), +) + +history <- model %>% fit( + x_train, y_train, + epochs = 1, batch_size = 128, + validation_split = 0.2, + verbose=3 +) + +acc <- model %>% evaluate(x_test, y_test, verbose=3) + +write(is.numeric(acc), stderr()) \ No newline at end of file From 2a3b59277f53b9901193c7cb6b584fd2850d7ad1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 11:22:58 +0800 Subject: [PATCH 047/355] chore(deps): bump crate-ci/typos from 1.13.12 to 1.13.16 (#1512) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.13.12 to 1.13.16. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.13.12...v1.13.16) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 345c95cc7..a3059face 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.13.12 + uses: crate-ci/typos@v1.13.16 with: config: ./typos.toml lint: From 60ebd49063caf28a2aa53c7f9b825831ea2cb3a3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 11:23:43 +0800 Subject: [PATCH 048/355] chore(deps): bump golang.org/x/term from 0.5.0 to 0.6.0 (#1514) Bumps [golang.org/x/term](https://github.com/golang/term) from 0.5.0 to 0.6.0. - [Release notes](https://github.com/golang/term/releases) - [Commits](https://github.com/golang/term/compare/v0.5.0...v0.6.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 4a221c1df..77ed72748 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.6.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.5.0 + golang.org/x/term v0.6.0 golang.org/x/time v0.3.0 ) @@ -129,7 +129,7 @@ require ( go.opentelemetry.io/proto/otlp v0.12.0 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect + golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.7.0 // indirect golang.org/x/tools v0.6.0 // indirect google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect diff --git a/go.sum b/go.sum index ad52c3f69..d8733c3a8 100644 --- a/go.sum +++ b/go.sum @@ -852,15 +852,15 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= -golang.org/x/term v0.5.0 h1:n2a8QNdAb0sZNpU9R1ALUXBbY+w51fCQDN+7EdxNBsY= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From cb90327362f768ba37b3d03b1524dd3535156acf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 13:38:19 +0800 Subject: [PATCH 049/355] chore(deps): bump github.com/onsi/gomega from 1.27.1 to 1.27.2 (#1513) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.1 to 1.27.2. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.1...v1.27.2) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 77ed72748..c28d5deac 100644 --- a/go.mod +++ b/go.mod @@ -25,8 +25,8 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.8.3 - github.com/onsi/gomega v1.27.1 + github.com/onsi/ginkgo/v2 v2.8.4 + github.com/onsi/gomega v1.27.2 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index d8733c3a8..58b3840a3 100644 --- a/go.sum +++ b/go.sum @@ -473,11 +473,11 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ= -github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY= +github.com/onsi/ginkgo/v2 v2.8.4 h1:gf5mIQ8cLFieruNLAdgijHF1PYfLphKm2dxxcUtcqK0= +github.com/onsi/ginkgo/v2 v2.8.4/go.mod h1:427dEDQZkDKsBvCjc2A/ZPefhKxsTTrsQegMlayL730= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.27.1 h1:rfztXRbg6nv/5f+Raen9RcGoSecHIFgBBLQK3Wdj754= -github.com/onsi/gomega v1.27.1/go.mod h1:aHX5xOykVYzWOV4WqQy0sy8BQptgukenXpCXfadcIAw= +github.com/onsi/gomega v1.27.2 h1:SKU0CXeKE/WVgIV1T61kSa3+IRE8Ekrv9rdXDwwTqnY= +github.com/onsi/gomega v1.27.2/go.mod h1:5mR3phAHpkAVIDkHEUBY6HGVsU+cpcEscrGPB4oPlZI= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From a50d7b510caa092607bbd08267c03d9012561c34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:37:23 +0800 Subject: [PATCH 050/355] chore(deps): bump pypa/cibuildwheel from 2.12.0 to 2.12.1 (#1520) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.12.0 to 2.12.1. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.12.0...v2.12.1) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3ab8682c0..d0eaade74 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.12.0 + uses: pypa/cibuildwheel@v2.12.1 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 7ef507410df7222c4df5fc6814c08af7994623a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:37:54 +0800 Subject: [PATCH 051/355] chore(deps): bump crate-ci/typos from 1.13.16 to 1.13.20 (#1521) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.13.16 to 1.13.20. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.13.16...v1.13.20) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index a3059face..9ab88a34f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -28,7 +28,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.13.16 + uses: crate-ci/typos@v1.13.20 with: config: ./typos.toml lint: From 8269b6b65e8cabee7fd70b442b079ac8f5c13e66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:38:16 +0800 Subject: [PATCH 052/355] chore(deps): bump github.com/urfave/cli/v2 from 2.24.4 to 2.25.0 (#1522) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.24.4 to 2.25.0. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.24.4...v2.25.0) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c28d5deac..4e949b98b 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.24.4 + github.com/urfave/cli/v2 v2.25.0 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.6.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 58b3840a3..6040d48be 100644 --- a/go.sum +++ b/go.sum @@ -602,8 +602,8 @@ github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljT github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.24.4 h1:0gyJJEBYtCV87zI/x2nZCPyDxD51K6xM8SkwjHFCNEU= -github.com/urfave/cli/v2 v2.24.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.0 h1:ykdZKuQey2zq0yin/l7JOm9Mh+pg72ngYMeB0ABn6q8= +github.com/urfave/cli/v2 v2.25.0/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 17c7113d9b19830ecb4a7c14839c894f05f29326 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:38:43 +0800 Subject: [PATCH 053/355] chore(deps): bump github.com/charmbracelet/lipgloss from 0.6.0 to 0.7.1 (#1525) Bumps [github.com/charmbracelet/lipgloss](https://github.com/charmbracelet/lipgloss) from 0.6.0 to 0.7.1. - [Release notes](https://github.com/charmbracelet/lipgloss/releases) - [Commits](https://github.com/charmbracelet/lipgloss/compare/v0.6.0...v0.7.1) --- updated-dependencies: - dependency-name: github.com/charmbracelet/lipgloss dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 13 ++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 4e949b98b..94cf5e035 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 github.com/charmbracelet/bubbletea v0.23.2 - github.com/charmbracelet/lipgloss v0.6.0 + github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 github.com/containerd/containerd v1.6.18 @@ -53,7 +53,7 @@ require ( github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect - github.com/aymanbagabas/go-osc52 v1.2.1 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect @@ -103,7 +103,7 @@ require ( github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.14.0 // indirect + github.com/muesli/termenv v0.15.1 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect diff --git a/go.sum b/go.sum index 6040d48be..3b01a2de6 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,9 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aymanbagabas/go-osc52 v1.2.1 h1:q2sWUyDcozPLcLabEMd+a+7Ea2DitxZVN9hTxab9L4E= github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= github.com/bcicen/ctop v0.7.7/go.mod h1:jO0mmP/wGx4ZEGCWAoMx8DYFNTYNs6YG8wzCGj+DX+Q= @@ -85,8 +86,8 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbletea v0.23.2 h1:vuUJ9HJ7b/COy4I30e8xDVQ+VRDUEFykIjryPfgsdps= github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+weYLF76mr1JyI7sM= -github.com/charmbracelet/lipgloss v0.6.0 h1:1StyZB9vBSOyuZxQUcUwGr17JmojPNm87inij9N3wJY= -github.com/charmbracelet/lipgloss v0.6.0/go.mod h1:tHh2wr34xcHjC2HCXIlGSG1jaDF0S0atAUvBMP6Ppuk= +github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= +github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -410,7 +411,6 @@ github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+Ei github.com/mattn/go-runewidth v0.0.0-20170201023540-14207d285c6c/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.10/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= @@ -454,12 +454,11 @@ github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTd github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/reflow v0.2.1-0.20210115123740-9e1d0d53df68/go.mod h1:Xk+z4oIWdQqJzsxyjgl3P22oYZnHdZ8FFTHAQQt5BMQ= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.11.1-0.20220204035834-5ac8409525e0/go.mod h1:Bd5NYQ7pd+SrtBSrSNoBBmXlcY8+Xj4BMJgh8qcZrvs= -github.com/muesli/termenv v0.14.0 h1:8x9NFfOe8lmIWK4pgy3IfVEy47f+ppe3tUqdPZG2Uy0= github.com/muesli/termenv v0.14.0/go.mod h1:kG/pF1E7fh949Xhe156crRUrHNyK221IuGO7Ez60Uc8= +github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= +github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= From 2ded823e77451959fc37f14a80270fe8715ead14 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:39:04 +0800 Subject: [PATCH 054/355] chore(deps): bump github.com/containerd/containerd from 1.6.18 to 1.7.0 (#1524) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.6.18 to 1.7.0. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.6.18...v1.7.0) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 30 +++++++++++-------- go.sum | 95 ++++++++++++++++++++++++++++++++++------------------------ 2 files changed, 73 insertions(+), 52 deletions(-) diff --git a/go.mod b/go.mod index 94cf5e035..fc121b2ae 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 - github.com/containerd/containerd v1.6.18 + github.com/containerd/containerd v1.7.0 github.com/creack/pty v1.1.18 github.com/docker/cli v23.0.0-rc.3+incompatible github.com/docker/docker v23.0.0-rc.1+incompatible @@ -28,7 +28,7 @@ require ( github.com/onsi/ginkgo/v2 v2.8.4 github.com/onsi/gomega v1.27.2 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc2 + github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.0 @@ -48,6 +48,7 @@ require ( ) require ( + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect @@ -58,9 +59,11 @@ require ( github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect github.com/containerd/continuity v0.3.0 // indirect - github.com/containerd/ttrpc v1.1.0 // indirect + github.com/containerd/ttrpc v1.2.1 // indirect github.com/containerd/typeurl v1.0.2 // indirect + github.com/containerd/typeurl/v2 v2.1.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect @@ -80,12 +83,12 @@ require ( github.com/google/pprof v0.0.0-20221203041831-ce31453925ec // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/grpc-ecosystem/grpc-gateway v1.16.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect - github.com/klauspost/compress v1.15.15 // indirect + github.com/klauspost/compress v1.16.0 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect @@ -121,19 +124,20 @@ require ( github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0 // indirect - go.opentelemetry.io/otel v1.4.1 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1 // indirect - go.opentelemetry.io/otel/sdk v1.4.1 // indirect - go.opentelemetry.io/otel/trace v1.4.1 // indirect - go.opentelemetry.io/proto/otlp v0.12.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect + go.opentelemetry.io/otel v1.14.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect + go.opentelemetry.io/otel/metric v0.37.0 // indirect + go.opentelemetry.io/otel/sdk v1.14.0 // indirect + go.opentelemetry.io/otel/trace v1.14.0 // indirect + go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/mod v0.8.0 // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.7.0 // indirect golang.org/x/tools v0.6.0 // indirect - google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef // indirect - google.golang.org/grpc v1.52.0 // indirect + google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect + google.golang.org/grpc v1.53.0 // indirect google.golang.org/protobuf v1.28.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 3b01a2de6..09e04a08b 100644 --- a/go.sum +++ b/go.sum @@ -18,14 +18,14 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v1.14.0 h1:hfm2+FfxVmnRlh6LpB7cg1ZNU+5edAHmW679JePztk0= +cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= @@ -40,6 +40,9 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -55,7 +58,8 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.9.6 h1:VwnDOgLeoi2du6dAznfmspNqTiwczvjv4K7NxuY9jsY= +github.com/Microsoft/hcsshim v0.10.0-rc.7 h1:HBytQPxcv8Oy4244zbQbe6hnOnx544eL5QPUqhJldz8= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= @@ -81,8 +85,8 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= -github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbletea v0.23.2 h1:vuUJ9HJ7b/COy4I30e8xDVQ+VRDUEFykIjryPfgsdps= github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+weYLF76mr1JyI7sM= @@ -99,6 +103,7 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= @@ -111,31 +116,33 @@ github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5w github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.6.18 h1:qZbsLvmyu+Vlty0/Ex5xc0z2YtKpIsb5n45mAMI+2Ns= -github.com/containerd/containerd v1.6.18/go.mod h1:1RdCUu95+gc2v9t3IL+zIlpClSmew7/0YS8O5eQZrOw= +github.com/containerd/containerd v1.7.0 h1:G/ZQr3gMZs6ZT0qPUZ15znx5QSdQdASW11nXTLTM2Pg= +github.com/containerd/containerd v1.7.0/go.mod h1:QfR7Efgb/6X2BDpTPJRvPTYDE9rsF0FsXX9J8sIs/sc= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= +github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= github.com/containerd/stargz-snapshotter/estargz v0.13.0 h1:fD7AwuVV+B40p0d9qVkH/Au1qhp8hn/HWJHIYjpEcfw= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v1.1.0 h1:GbtyLRxb0gOLR0TYQWt3O6B0NvT8tMdorEHqIQo/lWI= -github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= +github.com/containerd/ttrpc v1.2.1 h1:VWv/Rzx023TBLv4WQ+9WPXlBG/s3rsRjY3i9AJ2BJdE= +github.com/containerd/ttrpc v1.2.1/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.0 h1:yNAhJvbNEANt7ck48IlEGOxP7YAp6LLpGn5jZACDNIE= +github.com/containerd/typeurl/v2 v2.1.0/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -151,6 +158,8 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -180,6 +189,7 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= @@ -247,6 +257,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -290,7 +302,7 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= @@ -325,8 +337,9 @@ github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB7 github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -370,8 +383,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.15.15 h1:EF27CXIuDsYJ6mmvtBRlEuB2UVOqHG1tAXgZ7yIO+lw= -github.com/klauspost/compress v1.15.15/go.mod h1:ZcK2JAFqKOpnBlxcLsJzYfrS9X1akm9fHZNnD9+Vo/4= +github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= +github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -437,6 +450,7 @@ github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7s github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -483,17 +497,17 @@ github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.4 h1:nRCz/8sKg6K6jgYAFLDlXzPeITBZJyX28DBVhWD+5dg= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.10.2 h1:NFy2xCsjn7+WspbfZkUd5zyVeisV7VFbPSP96+8/ha4= +github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -552,6 +566,7 @@ github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0 github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= @@ -636,22 +651,21 @@ go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0 h1:n9b7AAdbQtQ0k9dm0Dm2/KUcUqtG8i2O15KzNaDze8c= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.29.0/go.mod h1:LsankqVDx4W+RhZNA5uWarULII/MBhF5qwCYxTuyXjs= -go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtBWakzk= -go.opentelemetry.io/otel v1.4.1 h1:QbINgGDDcoQUoMJa2mMaWno49lja9sHwp6aoa2n3a4g= -go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.4.1/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1 h1:WPpPsAAs8I2rA47v5u0558meKmmwm1Dj99ZbqCV8sZ8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.4.1/go.mod h1:o5RW5o2pKpJLD5dNTCmjF1DorYwMeFJmb/rKr5sLaa8= -go.opentelemetry.io/otel/sdk v1.4.1 h1:J7EaW71E0v87qflB4cDolaqq3AcujGrtyIPGQoZOB0Y= -go.opentelemetry.io/otel/sdk v1.4.1/go.mod h1:NBwHDgDIBYjwK2WNu1OPgsIc2IJzmBXNnvIJxJc8BpE= -go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+gLP8qJCi4aE= -go.opentelemetry.io/otel/trace v1.4.1 h1:O+16qcdTrT7zxv2J6GejTPFinSwA++cYerC5iSiF8EQ= -go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= +go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= +go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= +go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= +go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= +go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= +go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= +go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.12.0 h1:CMJ/3Wp7iOWES+CYLfnBv+DVmPbB+kmy9PJ92XvlR6c= -go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63SUguV7GGvlSQ= +go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd h1:Uo/x0Ir5vQJ+683GXB9Ug+4fcjsbp7z7Ul8UaZbhsRM= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -763,6 +777,7 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -850,6 +865,7 @@ golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1006,8 +1022,9 @@ google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef h1:uQ2vjV/sHTsWSqdKeLqmwitzgvjMl7o4IdtHwUDXSJY= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1029,10 +1046,10 @@ google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA5 google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk= -google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From 168434a7585ab0286417bfa023dece9063bc2b39 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 11:59:27 +0800 Subject: [PATCH 055/355] chore(deps): bump golang.org/x/crypto from 0.6.0 to 0.7.0 (#1515) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.6.0 to 0.7.0. - [Release notes](https://github.com/golang/crypto/releases) - [Commits](https://github.com/golang/crypto/compare/v0.6.0...v0.7.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index fc121b2ae..63bc21ab4 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.0 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.6.0 + golang.org/x/crypto v0.7.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.6.0 golang.org/x/time v0.3.0 @@ -132,9 +132,9 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/mod v0.8.0 // indirect - golang.org/x/net v0.7.0 // indirect + golang.org/x/net v0.8.0 // indirect golang.org/x/sys v0.6.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/text v0.8.0 // indirect golang.org/x/tools v0.6.0 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect diff --git a/go.sum b/go.sum index 09e04a08b..5a7dd7b01 100644 --- a/go.sum +++ b/go.sum @@ -686,8 +686,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= +golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -766,8 +766,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -885,8 +885,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 84b24eec98a86c479e984d4b8352ec249a791600 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 14 Mar 2023 14:26:47 +0800 Subject: [PATCH 056/355] fix: upgrade buildkit to fix the secury issue (#1526) * fix: upgrade buildkit to fix the secury issue Signed-off-by: Keming <kemingyang@tensorchord.ai> * rm comment Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 2 +- go.sum | 5 +++-- pkg/app/app.go | 1 - pkg/home/manager_test.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 63bc21ab4..03992baf7 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/mattn/go-isatty v0.0.17 - github.com/moby/buildkit v0.11.0-rc3.0.20230112115050-60e82c1bcdd7 + github.com/moby/buildkit v0.11.4 github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 diff --git a/go.sum b/go.sum index 5a7dd7b01..35a3aa54b 100644 --- a/go.sum +++ b/go.sum @@ -440,8 +440,8 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.11.0-rc3.0.20230112115050-60e82c1bcdd7 h1:95HXIYYoJYHg5Il51AwxN/B3I4yu9sXPTrP0eYBbgC8= -github.com/moby/buildkit v0.11.0-rc3.0.20230112115050-60e82c1bcdd7/go.mod h1:v43oa6H2Fx/cdzc7j0UlUu8p6188yy1P3vrujAs99uw= +github.com/moby/buildkit v0.11.4 h1:mleVHr+n7HUD65QNUkgkT3d8muTzhYUoHE9FM3Ej05s= +github.com/moby/buildkit v0.11.4/go.mod h1:P5Qi041LvCfhkfYBHry+Rwoo3Wi6H971J2ggE+PcIoo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= @@ -567,6 +567,7 @@ github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= diff --git a/pkg/app/app.go b/pkg/app/app.go index a547794f2..7ff19ae87 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -18,7 +18,6 @@ import ( "github.com/cockroachdb/errors" _ "github.com/moby/buildkit/client/connhelper/dockercontainer" _ "github.com/moby/buildkit/client/connhelper/kubepod" - _ "github.com/moby/buildkit/client/connhelper/nerdctlcontainer" _ "github.com/moby/buildkit/client/connhelper/podmancontainer" "github.com/sirupsen/logrus" "github.com/spf13/viper" diff --git a/pkg/home/manager_test.go b/pkg/home/manager_test.go index 2a8d96432..895776fda 100644 --- a/pkg/home/manager_test.go +++ b/pkg/home/manager_test.go @@ -48,7 +48,7 @@ var _ = Describe("home manager", func() { Expect(m.ContextFile()).To(Equal(filepath.Join(fileutil.DefaultConfigDir, "contexts"))) c, err := m.ContextGetCurrent() Expect(err).NotTo(HaveOccurred()) - Expect(c.Builder).To(Equal(types.BuilderTypeDocker)) + Expect(c.Builder).To(Or(Equal(types.BuilderTypeDocker), Equal(types.BuilderTypeMoby))) Expect(c.BuilderAddress).To(Equal("envd_buildkitd")) Expect(c.Runner).To(Equal(types.RunnerTypeDocker)) }) From 095811d63651c121e1e941747569f7f8e264efea Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 17 Mar 2023 15:34:06 +0800 Subject: [PATCH 057/355] fix: add env to the image itself instead of runtime config (#1528) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v0/system.go | 3 +++ pkg/lang/ir/v0/user.go | 3 +++ pkg/lang/ir/v1/system.go | 3 +++ pkg/lang/ir/v1/user.go | 3 +++ 4 files changed, 12 insertions(+) diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 96aab5c21..2ed2f274c 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -149,6 +149,9 @@ func (g *generalGraph) preparePythonBase(root llb.State) llb.State { for _, env := range types.BaseEnvironment { root = root.AddEnv(env.Name, env.Value) } + for k, v := range g.RuntimeEnviron { + root = root.AddEnv(k, v) + } // apt packages var sb strings.Builder diff --git a/pkg/lang/ir/v0/user.go b/pkg/lang/ir/v0/user.go index 2a24cbdda..689202739 100644 --- a/pkg/lang/ir/v0/user.go +++ b/pkg/lang/ir/v0/user.go @@ -38,6 +38,9 @@ func (g *generalGraph) compileUserOwn(root llb.State) llb.State { for _, env := range types.BaseEnvironment { user = user.AddEnv(env.Name, env.Value) } + for k, v := range g.RuntimeEnviron { + user = user.AddEnv(k, v) + } user.AddEnv("PATH", strings.Join(g.RuntimeEnvPaths, ":")) return user } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 2afd21211..605c90200 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -280,6 +280,9 @@ func (g *generalGraph) compileDevPackages(root llb.State) llb.State { for _, env := range types.BaseEnvironment { root = root.AddEnv(env.Name, env.Value) } + for k, v := range g.RuntimeEnviron { + root = root.AddEnv(k, v) + } // apt packages var sb strings.Builder diff --git a/pkg/lang/ir/v1/user.go b/pkg/lang/ir/v1/user.go index 680b79e09..7b7f50f21 100644 --- a/pkg/lang/ir/v1/user.go +++ b/pkg/lang/ir/v1/user.go @@ -39,6 +39,9 @@ func (g *generalGraph) compileUserOwn(root llb.State) llb.State { for _, env := range types.BaseEnvironment { user = user.AddEnv(env.Name, env.Value) } + for k, v := range g.RuntimeEnviron { + user = user.AddEnv(k, v) + } user = user.AddEnv("PATH", strings.Join(g.RuntimeEnvPaths, ":")) return user } From a7af1f2ab3d95e56e7488983e76252cf8fff4a9a Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 17 Mar 2023 15:34:27 +0800 Subject: [PATCH 058/355] docs: envd expose port should be int (#1529) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- envd/api/v0/runtime.py | 8 ++++---- envd/api/v1/runtime.py | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/envd/api/v0/runtime.py b/envd/api/v0/runtime.py index 4a6769c44..6791e9fa3 100644 --- a/envd/api/v0/runtime.py +++ b/envd/api/v0/runtime.py @@ -43,8 +43,8 @@ def command(commands: Dict[str, str]): def expose( - envd_port: str, - host_port: Optional[str], + envd_port: int, + host_port: Optional[int], service: Optional[str], listen_addr: Optional[str], ): @@ -52,8 +52,8 @@ def expose( Proposal: https://github.com/tensorchord/envd/pull/780 Args: - envd_port (str): port in `envd` container - host_port (Optional[str]): port in the host, if not provided or + envd_port (int): port in `envd` container + host_port (Optional[int]): port in the host, if not provided or `host_port=0`, `envd` will randomly choose a free port service (Optional[str]): service name listen_addr (Optional[str]): address to listen on diff --git a/envd/api/v1/runtime.py b/envd/api/v1/runtime.py index d1f20115e..a4cbbe974 100644 --- a/envd/api/v1/runtime.py +++ b/envd/api/v1/runtime.py @@ -49,8 +49,8 @@ def command(commands: Dict[str, str]): def expose( - envd_port: str, - host_port: Optional[str], + envd_port: int, + host_port: Optional[int], service: Optional[str], listen_addr: Optional[str], ): @@ -58,8 +58,8 @@ def expose( Proposal: https://github.com/tensorchord/envd/pull/780 Args: - envd_port (str): port in `envd` container - host_port (Optional[str]): port in the host, if not provided or + envd_port (int): port in `envd` container + host_port (Optional[int]): port in the host, if not provided or `host_port=0`, `envd` will randomly choose a free port service (Optional[str]): service name listen_addr (Optional[str]): address to listen on From 7be38d8f5681b0347e8163428e3c1f7503541b36 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 17 Mar 2023 15:36:37 +0800 Subject: [PATCH 059/355] docs: updated CHANGELOG.md (#1530) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b1eeb91ca..8545e24c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,37 @@ # Changelog +## v0.3.14 (2023-03-17) + + * [095811d](https://github.com/tensorchord/envd/commit/095811d63651c121e1e941747569f7f8e264efea) fix: add env to the image itself instead of runtime config (#1528) + * [84b24ee](https://github.com/tensorchord/envd/commit/84b24eec98a86c479e984d4b8352ec249a791600) fix: upgrade buildkit to fix the secury issue (#1526) + * [168434a](https://github.com/tensorchord/envd/commit/168434a7585ab0286417bfa023dece9063bc2b39) chore(deps): bump golang.org/x/crypto from 0.6.0 to 0.7.0 (#1515) + * [2ded823](https://github.com/tensorchord/envd/commit/2ded823e77451959fc37f14a80270fe8715ead14) chore(deps): bump github.com/containerd/containerd from 1.6.18 to 1.7.0 (#1524) + * [17c7113](https://github.com/tensorchord/envd/commit/17c7113d9b19830ecb4a7c14839c894f05f29326) chore(deps): bump github.com/charmbracelet/lipgloss from 0.6.0 to 0.7.1 (#1525) + * [8269b6b](https://github.com/tensorchord/envd/commit/8269b6b65e8cabee7fd70b442b079ac8f5c13e66) chore(deps): bump github.com/urfave/cli/v2 from 2.24.4 to 2.25.0 (#1522) + * [7ef5074](https://github.com/tensorchord/envd/commit/7ef507410df7222c4df5fc6814c08af7994623a9) chore(deps): bump crate-ci/typos from 1.13.16 to 1.13.20 (#1521) + * [a50d7b5](https://github.com/tensorchord/envd/commit/a50d7b510caa092607bbd08267c03d9012561c34) chore(deps): bump pypa/cibuildwheel from 2.12.0 to 2.12.1 (#1520) + * [cb90327](https://github.com/tensorchord/envd/commit/cb90327362f768ba37b3d03b1524dd3535156acf) chore(deps): bump github.com/onsi/gomega from 1.27.1 to 1.27.2 (#1513) + * [60ebd49](https://github.com/tensorchord/envd/commit/60ebd49063caf28a2aa53c7f9b825831ea2cb3a3) chore(deps): bump golang.org/x/term from 0.5.0 to 0.6.0 (#1514) + * [2a3b592](https://github.com/tensorchord/envd/commit/2a3b59277f53b9901193c7cb6b584fd2850d7ad1) chore(deps): bump crate-ci/typos from 1.13.12 to 1.13.16 (#1512) + * [8c23bad](https://github.com/tensorchord/envd/commit/8c23bad4f349a4024ee658c11d0ac056856e0692) e2e MNIST deep learning example for R (#1510) + * [1e1819f](https://github.com/tensorchord/envd/commit/1e1819f0083559cc4998259ae9204089094a0daf) chore(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#1507) + * [c165138](https://github.com/tensorchord/envd/commit/c1651384a0cee0840352c0813b157ff31046dc45) chore(deps): bump github.com/tensorchord/envd-server from 0.0.25 to 0.0.27 (#1505) + * [484a452](https://github.com/tensorchord/envd/commit/484a45206aa0a03bd9307cb5dd73167d69b069e3) chore(deps): bump crate-ci/typos from 1.13.10 to 1.13.12 (#1504) + * [b641b0c](https://github.com/tensorchord/envd/commit/b641b0c56b9925ee2024093ec6bd7450fca40b4d) feat: Support installing multi-language environment at the same time (#1501) + * [f19289e](https://github.com/tensorchord/envd/commit/f19289e1646ed724e1b32b26c527324c95773e80) misc: Use GitHub Issue Form instead of markdown template (#1494) + * [dc57256](https://github.com/tensorchord/envd/commit/dc57256211e3a7b714ca5185254e66f5a979e02a) feat: add typos to pre-commit and GitHub action (#1493) + * [6bf7d5b](https://github.com/tensorchord/envd/commit/6bf7d5ba68772759904ba434e0394df2d9d08f5f) chore(deps): bump github.com/urfave/cli/v2 from 2.24.3 to 2.24.4 (#1490) + * [17e133c](https://github.com/tensorchord/envd/commit/17e133c9680a4e9396dfaf8b3622828d6655a187) chore(deps): bump github.com/onsi/gomega from 1.26.0 to 1.27.1 (#1489) + * [3919cb2](https://github.com/tensorchord/envd/commit/3919cb21a19c423d77943a98f0a1ee29e0f820b0) chore(deps): bump golang.org/x/net from 0.6.0 to 0.7.0 (#1488) + +### Contributors + + * Keming + * Nadeshiko Manju + * Zhizhen He + * dependabot[bot] + * x0oo0x + ## v0.3.13 (2023-02-20) * [0f21639](https://github.com/tensorchord/envd/commit/0f21639612f0c438bcd57f07de273858f5a70d81) chore(deps): bump github.com/containerd/containerd from 1.6.17 to 1.6.18 (#1481) From c065935e1ea053a40efd1543f30000f1c5303bc8 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 17 Mar 2023 16:54:18 +0800 Subject: [PATCH 060/355] feat: support GitHub merge queue (#1531) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 1 + .github/workflows/envd-lint.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9ab88a34f..6215aa298 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -15,6 +15,7 @@ on: - '**.go' - 'Makefile' - 'go.**' + merge_group: concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/envd-lint.yml b/.github/workflows/envd-lint.yml index b06ca92bf..b844d3a8c 100644 --- a/.github/workflows/envd-lint.yml +++ b/.github/workflows/envd-lint.yml @@ -17,6 +17,7 @@ on: - '**.py' - '**.ipynb' - 'Makefile' + merge_group: concurrency: group: ${{ github.workflow }}-${{ github.ref }} From b4ab3f3f4c9f3bda18c99eddeded0cc70319528b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:40:42 +0800 Subject: [PATCH 061/355] chore(deps): bump crate-ci/typos from 1.13.20 to 1.13.26 (#1533) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.13.20 to 1.13.26. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.13.20...v1.13.26) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6215aa298..9bba6658e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.13.20 + uses: crate-ci/typos@v1.13.26 with: config: ./typos.toml lint: From b644dc5e543e6794c6ecbdb1bb891673514f5b83 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:41:01 +0800 Subject: [PATCH 062/355] chore(deps): bump actions/setup-go from 3 to 4 (#1532) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 3 to 4. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 16 ++++++++-------- .github/workflows/nightly.yml | 20 ++++++++++---------- .github/workflows/release.yml | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9bba6658e..9f3d9595a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -36,7 +36,7 @@ jobs: name: lint runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: 1.19 - uses: actions/checkout@v3 @@ -73,7 +73,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -109,7 +109,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -145,7 +145,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -181,7 +181,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -217,7 +217,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -253,7 +253,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -281,7 +281,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Install bins diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 46f9fd034..19f646944 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -16,7 +16,7 @@ jobs: if: github.repository == 'tensorchord/envd' runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v3 + - uses: actions/setup-go@v4 with: go-version: 1.19 - uses: actions/checkout@v3 @@ -54,7 +54,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -91,7 +91,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -128,7 +128,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -163,7 +163,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Install bins @@ -202,7 +202,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -230,7 +230,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -267,7 +267,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -304,7 +304,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules @@ -341,7 +341,7 @@ jobs: - name: Check out code uses: actions/checkout@v3 - name: Setup Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Cache Go modules diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d0eaade74..87d5368cf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v3 + uses: actions/setup-go@v4 with: go-version: 1.19 - name: Docker Login From 574a93adc7a32111fceb37adc27e8fa45632e4e9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:45:09 +0800 Subject: [PATCH 063/355] chore(deps): bump github.com/onsi/gomega from 1.27.2 to 1.27.4 (#1535) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.2 to 1.27.4. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.2...v1.27.4) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 19 ++++++++++--------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 03992baf7..3b3e78bec 100644 --- a/go.mod +++ b/go.mod @@ -25,8 +25,8 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.8.4 - github.com/onsi/gomega v1.27.2 + github.com/onsi/ginkgo/v2 v2.9.1 + github.com/onsi/gomega v1.27.4 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 @@ -78,7 +78,7 @@ require ( github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/golang/protobuf v1.5.3 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/pprof v0.0.0-20221203041831-ce31453925ec // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect @@ -131,11 +131,11 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/mod v0.8.0 // indirect + golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.8.0 // indirect golang.org/x/sys v0.6.0 // indirect golang.org/x/text v0.8.0 // indirect - golang.org/x/tools v0.6.0 // indirect + golang.org/x/tools v0.7.0 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/go.sum b/go.sum index 35a3aa54b..779f0be65 100644 --- a/go.sum +++ b/go.sum @@ -287,8 +287,9 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -486,11 +487,11 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.8.4 h1:gf5mIQ8cLFieruNLAdgijHF1PYfLphKm2dxxcUtcqK0= -github.com/onsi/ginkgo/v2 v2.8.4/go.mod h1:427dEDQZkDKsBvCjc2A/ZPefhKxsTTrsQegMlayL730= +github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= +github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.27.2 h1:SKU0CXeKE/WVgIV1T61kSa3+IRE8Ekrv9rdXDwwTqnY= -github.com/onsi/gomega v1.27.2/go.mod h1:5mR3phAHpkAVIDkHEUBY6HGVsU+cpcEscrGPB4oPlZI= +github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= +github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -724,8 +725,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.8.0 h1:LUYupSeNrTNCGzR/hVBk2NHZO4hXcVaW1k4Qx7rjPx8= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -950,8 +951,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 176637b7e68081045937a30101e022bda9a2e74d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 12:46:10 +0800 Subject: [PATCH 064/355] chore(deps): bump github.com/schollz/progressbar/v3 from 3.13.0 to 3.13.1 (#1534) chore(deps): bump github.com/schollz/progressbar/v3 Bumps [github.com/schollz/progressbar/v3](https://github.com/schollz/progressbar) from 3.13.0 to 3.13.1. - [Release notes](https://github.com/schollz/progressbar/releases) - [Commits](https://github.com/schollz/progressbar/compare/v3.13.0...v3.13.1) --- updated-dependencies: - dependency-name: github.com/schollz/progressbar/v3 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 3b3e78bec..369ae4a32 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 - github.com/schollz/progressbar/v3 v3.13.0 + github.com/schollz/progressbar/v3 v3.13.1 github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 diff --git a/go.sum b/go.sum index 779f0be65..66058c27e 100644 --- a/go.sum +++ b/go.sum @@ -546,8 +546,8 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= -github.com/schollz/progressbar/v3 v3.13.0 h1:9TeeWRcjW2qd05I8Kf9knPkW4vLM/hYoa6z9ABvxje8= -github.com/schollz/progressbar/v3 v3.13.0/go.mod h1:ZBYnSuLAX2LU8P8UiKN/KgF2DY58AJC8yfVYLPC8Ly4= +github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= +github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= @@ -868,14 +868,12 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 9a4cad69d460a1bee4cf4f6056e670a8f121931c Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 24 Mar 2023 14:04:17 +0800 Subject: [PATCH 065/355] fix(v1): add base env and runtime env to both dev&nondev (#1538) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/system.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 605c90200..8a74d98b6 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -277,13 +277,6 @@ func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { } func (g *generalGraph) compileDevPackages(root llb.State) llb.State { - for _, env := range types.BaseEnvironment { - root = root.AddEnv(env.Name, env.Value) - } - for k, v := range g.RuntimeEnviron { - root = root.AddEnv(k, v) - } - // apt packages var sb strings.Builder sb.WriteString("apt-get update && apt-get install -y apt-utils && ") @@ -341,6 +334,15 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { kv := strings.SplitN(e, "=", 2) g.RuntimeEnviron[kv[0]] = kv[1] } + + // add necessary envs + for _, env := range types.BaseEnvironment { + base = base.AddEnv(env.Name, env.Value) + } + for k, v := range g.RuntimeEnviron { + base = base.AddEnv(k, v) + } + // TODO: inherit the USER from base g.User = "" return base, nil From 4d62312b53db197e6735175eb59e7e58e62dcb60 Mon Sep 17 00:00:00 2001 From: Nadeshiko Manju <me@manjusaka.me> Date: Fri, 24 Mar 2023 14:42:16 +0800 Subject: [PATCH 066/355] feat: Support set environment name in `envd up` command (#1495) Signed-off-by: Manjusaka <me@manjusaka.me> --- pkg/app/up.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/app/up.go b/pkg/app/up.go index 3e81cf24e..64eb2c0f2 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -43,6 +43,11 @@ var CommandUp = &cli.Command{ Aliases: []string{"t"}, DefaultText: "PROJECT:dev", }, + &cli.StringFlag{ + Name: "name", + Usage: "environment name", + Value: "", + }, &cli.PathFlag{ Name: "path", Usage: "Path to the directory containing the build.envd", @@ -207,9 +212,12 @@ func up(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to create the docker client") } - name, err := buildutil.CreateEnvNameFromDir(buildOpt.BuildContextDir) - if err != nil { - return errors.Wrapf(err, "failed to create the env name from %s", buildOpt.BuildContextDir) + name := clicontext.String("name") + if name == "" { + name, err = buildutil.CreateEnvNameFromDir(buildOpt.BuildContextDir) + if err != nil { + return errors.Wrapf(err, "failed to create the env name from %s", buildOpt.BuildContextDir) + } } startOptions := envd.StartOptions{ EnvironmentName: name, From 948a83c5747b062ece310922c577b291e6ff21e6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 24 Mar 2023 18:32:56 +0800 Subject: [PATCH 067/355] docs: updated CHANGELOG.md (#1539) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8545e24c4..754a9c5fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## v0.3.15 (2023-03-24) + + * [4d62312](https://github.com/tensorchord/envd/commit/4d62312b53db197e6735175eb59e7e58e62dcb60) feat: Support set environment name in `envd up` command (#1495) + * [9a4cad6](https://github.com/tensorchord/envd/commit/9a4cad69d460a1bee4cf4f6056e670a8f121931c) fix(v1): add base env and runtime env to both dev&nondev (#1538) + * [176637b](https://github.com/tensorchord/envd/commit/176637b7e68081045937a30101e022bda9a2e74d) chore(deps): bump github.com/schollz/progressbar/v3 from 3.13.0 to 3.13.1 (#1534) + * [574a93a](https://github.com/tensorchord/envd/commit/574a93adc7a32111fceb37adc27e8fa45632e4e9) chore(deps): bump github.com/onsi/gomega from 1.27.2 to 1.27.4 (#1535) + * [b644dc5](https://github.com/tensorchord/envd/commit/b644dc5e543e6794c6ecbdb1bb891673514f5b83) chore(deps): bump actions/setup-go from 3 to 4 (#1532) + * [b4ab3f3](https://github.com/tensorchord/envd/commit/b4ab3f3f4c9f3bda18c99eddeded0cc70319528b) chore(deps): bump crate-ci/typos from 1.13.20 to 1.13.26 (#1533) + * [c065935](https://github.com/tensorchord/envd/commit/c065935e1ea053a40efd1543f30000f1c5303bc8) feat: support GitHub merge queue (#1531) + +### Contributors + + * Keming + * Nadeshiko Manju + * dependabot[bot] + ## v0.3.14 (2023-03-17) * [095811d](https://github.com/tensorchord/envd/commit/095811d63651c121e1e941747569f7f8e264efea) fix: add env to the image itself instead of runtime config (#1528) From c3a8e1cd827c8a99820bbe34e83b9590e2d071b0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:22:04 +0800 Subject: [PATCH 068/355] chore(deps): bump crate-ci/typos from 1.13.26 to 1.14.3 (#1540) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.13.26 to 1.14.3. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.13.26...v1.14.3) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9f3d9595a..28360b475 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.13.26 + uses: crate-ci/typos@v1.14.3 with: config: ./typos.toml lint: From 21c3355c682476179255ed976cbdb70e9b47a60d Mon Sep 17 00:00:00 2001 From: zhang-wei <zhangwei24@apache.org> Date: Mon, 27 Mar 2023 19:38:08 +0800 Subject: [PATCH 069/355] feat(CLI): add fish completion (#1546) * add fish completion Signed-off-by: zhangwei <zhangwei24@apache.org> * fix lint Signed-off-by: zhangwei <zhangwei24@apache.org> * update when the file already exists Signed-off-by: zhangwei <zhangwei24@apache.org> --------- Signed-off-by: zhangwei <zhangwei24@apache.org> --- pkg/app/bootstrap.go | 11 ++++++-- pkg/app/completion.go | 10 +++++-- pkg/autocomplete/bash.go | 26 ++++------------- pkg/autocomplete/fish.go | 61 ++++++++++++++++++++++++++++++++++++++++ pkg/autocomplete/zsh.go | 54 +++++++++++++---------------------- 5 files changed, 101 insertions(+), 61 deletions(-) create mode 100644 pkg/autocomplete/fish.go diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 3a6fa80b0..d733c10e6 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -175,17 +175,22 @@ func autocomplete(clicontext *cli.Context) error { shell := os.Getenv("SHELL") if strings.Contains(shell, "zsh") { logrus.Infof("Install zsh autocompletion") - if err := ac.InsertZSHCompleteEntry(); err != nil { + if err := ac.InsertZSHCompleteEntry(clicontext); err != nil { logrus.Warnf("Warning: %s\n", err.Error()) } } else if strings.Contains(shell, "bash") { logrus.Infof("Install bash autocompletion") - if err := ac.InsertBashCompleteEntry(); err != nil { + if err := ac.InsertBashCompleteEntry(clicontext); err != nil { + logrus.Warnf("Warning: %s\n", err.Error()) + } + } else if strings.Contains(shell, "fish") { + logrus.Infof("Install fish autocompletion") + if err := ac.InsertFishCompleteEntry(clicontext); err != nil { logrus.Warnf("Warning: %s\n", err.Error()) } } else { logrus.Infof("Install bash autocompletion (fallback from \"%s\")", shell) - if err := ac.InsertBashCompleteEntry(); err != nil { + if err := ac.InsertBashCompleteEntry(clicontext); err != nil { logrus.Warnf("Warning: %s\n", err.Error()) } } diff --git a/pkg/app/completion.go b/pkg/app/completion.go index bd92adc95..b5310a567 100644 --- a/pkg/app/completion.go +++ b/pkg/app/completion.go @@ -45,15 +45,15 @@ var CommandCompletion = &cli.Command{ Action: completion, } -func handleCompletion(clicontext *cli.Context, installFunc func() error, outputFunc func() (string, error)) error { +func handleCompletion(clicontext *cli.Context, installFunc func(*cli.Context) error, outputFunc func(*cli.Context) (string, error)) error { if clicontext.Bool("no-install") { - script, err := outputFunc() + script, err := outputFunc(clicontext) if err != nil { return err } fmt.Println(script) } else { - if err := installFunc(); err != nil { + if err := installFunc(clicontext); err != nil { return err } } @@ -85,6 +85,10 @@ func completion(clicontext *cli.Context) error { if err := handleCompletion(clicontext, ac.InsertBashCompleteEntry, ac.BashCompleteEntry); err != nil { return err } + case "fish": + if err := handleCompletion(clicontext, ac.InsertFishCompleteEntry, ac.FishCompleteEntry); err != nil { + return err + } default: return errors.Errorf("unknown shell type %s (support type: {bash|zsh})", shellList[i]) } diff --git a/pkg/autocomplete/bash.go b/pkg/autocomplete/bash.go index f970838c6..be95c87a1 100644 --- a/pkg/autocomplete/bash.go +++ b/pkg/autocomplete/bash.go @@ -20,6 +20,7 @@ import ( "runtime" "github.com/cockroachdb/errors" + "github.com/urfave/cli/v2" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -48,7 +49,7 @@ complete -o bashdefault -o default -o nospace -F _cli_bash_autocomplete $PROG unset PROG ` -func InsertBashCompleteEntry() error { +func InsertBashCompleteEntry(clicontext *cli.Context) error { var path string if runtime.GOOS == "darwin" { path = "/usr/local/etc/bash_completion.d/envd" @@ -65,33 +66,16 @@ func InsertBashCompleteEntry() error { return errors.Errorf("unable to enable bash-completion: %s does not exist", dirPath) } - pathExists, err := fileutil.FileExists(path) - if err != nil { - return errors.Wrapf(err, "failed checking if %s exists", path) - } - if pathExists { - return nil // file already exists, don't update it. - } - - // create the completion file - f, err := os.Create(path) - if err != nil { - return err - } - defer f.Close() - - bashEntry, err := BashCompleteEntry() + bashEntry, err := BashCompleteEntry(clicontext) if err != nil { return errors.Wrapf(err, "unable to enable bash-completion") } - - _, err = f.Write([]byte(bashEntry)) - if err != nil { + if err = os.WriteFile(path, []byte(bashEntry), 0644); err != nil { return errors.Wrapf(err, "failed writing to %s", path) } return nil } -func BashCompleteEntry() (string, error) { +func BashCompleteEntry(_ *cli.Context) (string, error) { return autocompleteBASH, nil } diff --git a/pkg/autocomplete/fish.go b/pkg/autocomplete/fish.go new file mode 100644 index 000000000..1212e539c --- /dev/null +++ b/pkg/autocomplete/fish.go @@ -0,0 +1,61 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package autocomplete + +import ( + "os" + "os/exec" + "path/filepath" + + "github.com/cockroachdb/errors" + "github.com/urfave/cli/v2" + + "github.com/tensorchord/envd/pkg/util/fileutil" +) + +func InsertFishCompleteEntry(clicontext *cli.Context) error { + _, err := exec.LookPath("fish") + if err != nil { + return errors.Errorf("can't find fish in this system, stop settings the fish-completion") + } + + homeDir, err := os.UserHomeDir() + if err != nil { + return errors.Wrapf(err, "unable obtain user directory", err) + } + path := filepath.Join(homeDir, ".config/fish/completions/envd.fish") + dirPath := filepath.Dir(path) + + dirPathExists, err := fileutil.DirExists(dirPath) + if err != nil { + return errors.Wrapf(err, "failed checking if %s exists", dirPath) + } + if !dirPathExists { + return errors.Errorf("unable to enable fish-completion: %s does not exists", dirPath) + } + + fishEntry, err := FishCompleteEntry(clicontext) + if err != nil { + return errors.Wrapf(err, "unable to enable fish-completion") + } + if err = os.WriteFile(path, []byte(fishEntry), 0644); err != nil { + return errors.Wrapf(err, "failed writing to %s", path) + } + return nil +} + +func FishCompleteEntry(clicontext *cli.Context) (string, error) { + return clicontext.App.ToFishCompletion() +} diff --git a/pkg/autocomplete/zsh.go b/pkg/autocomplete/zsh.go index 5471e8137..d4b3686cb 100644 --- a/pkg/autocomplete/zsh.go +++ b/pkg/autocomplete/zsh.go @@ -24,6 +24,7 @@ import ( "github.com/cockroachdb/errors" "github.com/containerd/containerd/log" + "github.com/urfave/cli/v2" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -59,24 +60,25 @@ var zshConfig = ` ` // If debugging this, it might be required to run `rm ~/.zcompdump*` to remove the cache -func InsertZSHCompleteEntry() error { +func InsertZSHCompleteEntry(clicontext *cli.Context) error { // check the system has zsh _, err := exec.LookPath("zsh") if err != nil { return errors.Errorf("can't find zsh in this system, stop setting the zsh-completion.") } + homeDir, err := os.UserHomeDir() + if err != nil { + return errors.Wrapf(err, "unable obtain user directory", err) + } // should be the same on linux and macOS filename := "envd.zsh" - homeDir := os.Getenv("HOME") dirs := []string{ "/usr/share/zsh/site-functions", "/usr/local/share/zsh/site-functions", fileutil.DefaultConfigDir, } - var f *os.File - var lastErr error path := "" for _, dir := range dirs { dirPathExists, err := fileutil.DirExists(dir) @@ -86,42 +88,17 @@ func InsertZSHCompleteEntry() error { if dirPathExists { path = fmt.Sprintf("%s/%s", dir, filename) log.L.Debugf("use the zsh-completion path for envd: %s", path) - - pathExists, err := fileutil.FileExists(path) - if err != nil { - lastErr = errors.Wrapf(err, "failed to check if %s exists", path) - } - if pathExists { - return nil // file already exists, don't update it. - } - - // create the completion file - f, err = os.Create(path) - if err != nil { - lastErr = err - continue - } - break } } - if f == nil { - return lastErr - } - defer f.Close() - - compEntry, err := ZshCompleteEntry() + pathExists, err := fileutil.FileExists(path) if err != nil { - return errors.Wrapf(err, "Warning: unable to enable zsh-completion") - } - - _, err = f.Write([]byte(compEntry)) - if err != nil { - return errors.Wrapf(err, "failed writing to %s", path) + return errors.Wrapf(err, "failed to check if %s exists", path) } - if strings.HasPrefix(path, homeDir) { + if strings.HasPrefix(path, homeDir) && !pathExists { + // write when the path does not exist to prevent duplicate writing during updates. zshFile, err := os.OpenFile(fmt.Sprintf("%s/.zshrc", homeDir), os.O_RDWR|os.O_APPEND|os.O_CREATE, 0660) if err != nil { log.L.Warnf("unable to open the `~/.zshrc`, please add the following lines into `~/.zshrc` to get the envd zsh completion:\n"+ @@ -138,10 +115,19 @@ func InsertZSHCompleteEntry() error { } } + compEntry, err := ZshCompleteEntry(clicontext) + if err != nil { + return errors.Wrapf(err, "Warning: unable to enable zsh-completion") + } + + if err = os.WriteFile(path, []byte(compEntry), 0644); err != nil { + return errors.Wrapf(err, "failed writing to %s", path) + } + return deleteZcompdump() } -func ZshCompleteEntry() (string, error) { +func ZshCompleteEntry(_ *cli.Context) (string, error) { return autocompleteZSH, nil } From 828fad70758f9d81b3811122259ed258d93ff655 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:42:55 +0800 Subject: [PATCH 070/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#1542) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.9.1 to 2.9.2. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.9.1...v2.9.2) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 369ae4a32..d6d03e911 100644 --- a/go.mod +++ b/go.mod @@ -25,7 +25,7 @@ require ( github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.9.1 + github.com/onsi/ginkgo/v2 v2.9.2 github.com/onsi/gomega v1.27.4 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b @@ -74,7 +74,7 @@ require ( github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect diff --git a/go.sum b/go.sum index 66058c27e..d55ff4b84 100644 --- a/go.sum +++ b/go.sum @@ -238,8 +238,8 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= @@ -487,8 +487,8 @@ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo/v2 v2.9.1 h1:zie5Ly042PD3bsCvsSOPvRnFwyo3rKe64TJlD6nu0mk= -github.com/onsi/ginkgo/v2 v2.9.1/go.mod h1:FEcmzVcCHl+4o9bQZVab+4dC9+j+91t2FHSzmGAPfuo= +github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= +github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= @@ -595,6 +595,7 @@ github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXf github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= From bf88f7c9e8d68b539281b24a4070cd4e74c1f8bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:43:15 +0800 Subject: [PATCH 071/355] chore(deps): bump github.com/mattn/go-isatty from 0.0.17 to 0.0.18 (#1545) Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.17 to 0.0.18. - [Release notes](https://github.com/mattn/go-isatty/releases) - [Commits](https://github.com/mattn/go-isatty/compare/v0.0.17...v0.0.18) --- updated-dependencies: - dependency-name: github.com/mattn/go-isatty dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index d6d03e911..97375ffbb 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 - github.com/mattn/go-isatty v0.0.17 + github.com/mattn/go-isatty v0.0.18 github.com/moby/buildkit v0.11.4 github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 github.com/morikuni/aec v1.0.0 diff --git a/go.sum b/go.sum index d55ff4b84..3bd232b18 100644 --- a/go.sum +++ b/go.sum @@ -418,8 +418,9 @@ github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hd github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.0-20170201023540-14207d285c6c/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= From ba76ca6823c515a99e4917ecd1b6fb20f1b8006b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:49:18 +0800 Subject: [PATCH 072/355] chore(deps): bump github.com/urfave/cli/v2 from 2.25.0 to 2.25.1 (#1543) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.0 to 2.25.1. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.0...v2.25.1) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 97375ffbb..c5a1ea343 100644 --- a/go.mod +++ b/go.mod @@ -39,7 +39,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.25.0 + github.com/urfave/cli/v2 v2.25.1 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.7.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 3bd232b18..e88183219 100644 --- a/go.sum +++ b/go.sum @@ -620,8 +620,8 @@ github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljT github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.25.0 h1:ykdZKuQey2zq0yin/l7JOm9Mh+pg72ngYMeB0ABn6q8= -github.com/urfave/cli/v2 v2.25.0/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= +github.com/urfave/cli/v2 v2.25.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 1f547f9d7c907557e7f257fa17bf50e39fdce603 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Mar 2023 19:50:41 +0800 Subject: [PATCH 073/355] chore(deps): bump github.com/onsi/gomega from 1.27.4 to 1.27.5 (#1544) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.4 to 1.27.5. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.4...v1.27.5) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c5a1ea343..3e3eec1e1 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.9.2 - github.com/onsi/gomega v1.27.4 + github.com/onsi/gomega v1.27.5 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index e88183219..019a606b3 100644 --- a/go.sum +++ b/go.sum @@ -491,8 +491,8 @@ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.27.4 h1:Z2AnStgsdSayCMDiCU42qIz+HLqEPcgiOCXjAU/w+8E= -github.com/onsi/gomega v1.27.4/go.mod h1:riYq/GJKh8hhoM01HN6Vmuy93AarCXCBGpvFDK3q3fQ= +github.com/onsi/gomega v1.27.5 h1:T/X6I0RNFw/kTqgfkZPcQ5KU6vCnWNBGdtrIx2dpGeQ= +github.com/onsi/gomega v1.27.5/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From 04f43da45423d18feb3a0899ab3589248be7f701 Mon Sep 17 00:00:00 2001 From: Kaiyang Chen <48289729+Kaiyang-Chen@users.noreply.github.com> Date: Wed, 29 Mar 2023 22:29:44 -0500 Subject: [PATCH 074/355] feat: fall back default builder to buildkit-container (#1548) * feat: fall back default builder to buildkit-container Signed-off-by: Kaiyang-Chen <kaiyang-chen@sjtu.edu.cn> * feat: fall back default builder to buildkit-container Signed-off-by: Kaiyang-Chen <kaiyang-chen@sjtu.edu.cn> --------- Signed-off-by: Kaiyang-Chen <kaiyang-chen@sjtu.edu.cn> --- pkg/home/manager.go | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/pkg/home/manager.go b/pkg/home/manager.go index cc41a9f05..518c8ac42 100644 --- a/pkg/home/manager.go +++ b/pkg/home/manager.go @@ -20,7 +20,6 @@ import ( "github.com/cockroachdb/errors" "github.com/sirupsen/logrus" - "github.com/tensorchord/envd/pkg/driver/docker" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" "github.com/tensorchord/envd/pkg/types" ) @@ -54,11 +53,6 @@ var ( ) func Initialize() error { - builder := types.BuilderTypeDocker - dockerVersion, err := docker.GetDockerVersion() - if err == nil && dockerVersion > 22 { - builder = types.BuilderTypeMoby - } once.Do(func() { defaultManager = &generalManager{ cacheMap: make(map[string]bool), @@ -67,7 +61,7 @@ func Initialize() error { Contexts: []types.Context{ { Name: "default", - Builder: builder, + Builder: types.BuilderTypeDocker, BuilderAddress: "envd_buildkitd", Runner: types.RunnerTypeDocker, RunnerAddress: nil, From f25b8e528b54d7c3b29cbba6ad23e2f586f06728 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:54:25 +0800 Subject: [PATCH 075/355] docs: updated CHANGELOG.md (#1549) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 754a9c5fc..785b6f989 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,21 @@ # Changelog +## v0.3.16 (2023-03-30) + + * [04f43da](https://github.com/tensorchord/envd/commit/04f43da45423d18feb3a0899ab3589248be7f701) feat: fall back default builder to buildkit-container (#1548) + * [1f547f9](https://github.com/tensorchord/envd/commit/1f547f9d7c907557e7f257fa17bf50e39fdce603) chore(deps): bump github.com/onsi/gomega from 1.27.4 to 1.27.5 (#1544) + * [ba76ca6](https://github.com/tensorchord/envd/commit/ba76ca6823c515a99e4917ecd1b6fb20f1b8006b) chore(deps): bump github.com/urfave/cli/v2 from 2.25.0 to 2.25.1 (#1543) + * [bf88f7c](https://github.com/tensorchord/envd/commit/bf88f7c9e8d68b539281b24a4070cd4e74c1f8bb) chore(deps): bump github.com/mattn/go-isatty from 0.0.17 to 0.0.18 (#1545) + * [828fad7](https://github.com/tensorchord/envd/commit/828fad70758f9d81b3811122259ed258d93ff655) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#1542) + * [21c3355](https://github.com/tensorchord/envd/commit/21c3355c682476179255ed976cbdb70e9b47a60d) feat(CLI): add fish completion (#1546) + * [c3a8e1c](https://github.com/tensorchord/envd/commit/c3a8e1cd827c8a99820bbe34e83b9590e2d071b0) chore(deps): bump crate-ci/typos from 1.13.26 to 1.14.3 (#1540) + +### Contributors + + * Kaiyang Chen + * dependabot[bot] + * zhang-wei + ## v0.3.15 (2023-03-24) * [4d62312](https://github.com/tensorchord/envd/commit/4d62312b53db197e6735175eb59e7e58e62dcb60) feat: Support set environment name in `envd up` command (#1495) From 3393bc56290265f79a97e83b6eab45faae1e6ae7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Apr 2023 15:35:16 +0800 Subject: [PATCH 076/355] chore(deps): bump github.com/onsi/gomega from 1.27.5 to 1.27.6 (#1552) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.5 to 1.27.6. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.5...v1.27.6) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3e3eec1e1..fcfe3717e 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.9.2 - github.com/onsi/gomega v1.27.5 + github.com/onsi/gomega v1.27.6 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 019a606b3..13992f292 100644 --- a/go.sum +++ b/go.sum @@ -491,8 +491,8 @@ github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.27.5 h1:T/X6I0RNFw/kTqgfkZPcQ5KU6vCnWNBGdtrIx2dpGeQ= -github.com/onsi/gomega v1.27.5/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From b36f07ed014bfed87e9703dae47fdd532cb741e4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 11:16:05 +0800 Subject: [PATCH 077/355] chore(deps): bump peter-evans/create-pull-request from 4 to 5 (#1558) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 4 to 5. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v4...v5) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index 6a3970948..27d92634b 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -17,7 +17,7 @@ jobs: - run: git fetch --prune --prune-tags - run: git tag -l 'v*' - run: ./hack/changelog.sh > CHANGELOG.md - - uses: peter-evans/create-pull-request@v4 + - uses: peter-evans/create-pull-request@v5 with: title: 'docs: updated CHANGELOG.md' commit-message: 'docs: updated CHANGELOG.md' From c385cb560572c95450a2ba3c3e3f3b9a76f7f9c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 11:16:23 +0800 Subject: [PATCH 078/355] chore(deps): bump crate-ci/typos from 1.14.3 to 1.14.5 (#1557) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.3 to 1.14.5. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.3...v1.14.5) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 28360b475..da74e095e 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.3 + uses: crate-ci/typos@v1.14.5 with: config: ./typos.toml lint: From dd4816746720a813755f59b72e281c2cdc5ce59b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 11:16:42 +0800 Subject: [PATCH 079/355] chore(deps): bump golang.org/x/term from 0.6.0 to 0.7.0 (#1555) Bumps [golang.org/x/term](https://github.com/golang/term) from 0.6.0 to 0.7.0. - [Release notes](https://github.com/golang/term/releases) - [Commits](https://github.com/golang/term/compare/v0.6.0...v0.7.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index fcfe3717e..de04955f1 100644 --- a/go.mod +++ b/go.mod @@ -43,7 +43,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.7.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.6.0 + golang.org/x/term v0.7.0 golang.org/x/time v0.3.0 ) @@ -133,7 +133,7 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.8.0 // indirect - golang.org/x/sys v0.6.0 // indirect + golang.org/x/sys v0.7.0 // indirect golang.org/x/text v0.8.0 // indirect golang.org/x/tools v0.7.0 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect diff --git a/go.sum b/go.sum index 13992f292..1ebf88e30 100644 --- a/go.sum +++ b/go.sum @@ -870,14 +870,16 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From e3833954ef61b1ca1305303565ff1376f5bd1ea2 Mon Sep 17 00:00:00 2001 From: hang lv <xlv20@fudan.edu.cn> Date: Mon, 10 Apr 2023 12:18:46 +0800 Subject: [PATCH 080/355] feat: bring apt-source compilation earlier (#1554) Signed-off-by: Xing Lv <xlv20@fudan.edu.cn> --- pkg/lang/ir/v1/compile.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 29127b52f..c663720ce 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -286,22 +286,22 @@ func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { if err != nil { return llb.State{}, errors.Wrap(err, "failed to get the base image") } + aptMirror := g.compileUbuntuAPT(base) // prepare dev env: stable operations should be done here to make it cache friendly if g.Dev { - dev := g.compileDevPackages(base) + dev := g.compileDevPackages(aptMirror) sshd := g.compileSSHD(dev) horust := g.installHorust(sshd) starship := g.compileStarship(horust) userGroup := g.compileUserGroup(starship) - base = userGroup + aptMirror = userGroup } - lang, err := g.compileLanguage(base) + lang, err := g.compileLanguage(aptMirror) if err != nil { return llb.State{}, errors.Wrap(err, "failed to compile language") } - aptMirror := g.compileUbuntuAPT(base) systemPackages := g.compileSystemPackages(aptMirror) merge := llb.Merge([]llb.State{ base, From db8d342c1eeb0f41d45b28e6f7b6a82604fb9f4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Apr 2023 13:44:57 +0800 Subject: [PATCH 081/355] chore(deps): bump golang.org/x/crypto from 0.7.0 to 0.8.0 (#1556) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.7.0 to 0.8.0. - [Release notes](https://github.com/golang/crypto/releases) - [Commits](https://github.com/golang/crypto/compare/v0.7.0...v0.8.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index de04955f1..6d64bf036 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.1 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.7.0 + golang.org/x/crypto v0.8.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.7.0 golang.org/x/time v0.3.0 @@ -132,9 +132,9 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect + golang.org/x/net v0.9.0 // indirect golang.org/x/sys v0.7.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/tools v0.7.0 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect diff --git a/go.sum b/go.sum index 1ebf88e30..3dc3e3fec 100644 --- a/go.sum +++ b/go.sum @@ -690,8 +690,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= +golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -770,8 +770,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -889,8 +889,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 60686bc63ad4bf95bac36b67fb890fe940dab1c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:46:42 +0800 Subject: [PATCH 082/355] chore(deps): bump crate-ci/typos from 1.14.5 to 1.14.6 (#1560) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.5 to 1.14.6. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.5...v1.14.6) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index da74e095e..9b2e24681 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.5 + uses: crate-ci/typos@v1.14.6 with: config: ./typos.toml lint: From c0010cc59de11a4a188bbfccd31d3e8f4ff65892 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Apr 2023 11:47:08 +0800 Subject: [PATCH 083/355] chore(deps): bump github.com/docker/cli from 23.0.0-rc.3+incompatible to 24.0.0-beta.2+incompatible (#1561) chore(deps): bump github.com/docker/cli Bumps [github.com/docker/cli](https://github.com/docker/cli) from 23.0.0-rc.3+incompatible to 24.0.0-beta.2+incompatible. - [Release notes](https://github.com/docker/cli/releases) - [Commits](https://github.com/docker/cli/compare/v23.0.0-rc.3...v24.0.0-beta.2) --- updated-dependencies: - dependency-name: github.com/docker/cli dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6d64bf036..42bc364a0 100644 --- a/go.mod +++ b/go.mod @@ -11,7 +11,7 @@ require ( github.com/containerd/console v1.0.3 github.com/containerd/containerd v1.7.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v23.0.0-rc.3+incompatible + github.com/docker/cli v24.0.0-beta.2+incompatible github.com/docker/docker v23.0.0-rc.1+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 diff --git a/go.sum b/go.sum index 3dc3e3fec..e980eb806 100644 --- a/go.sum +++ b/go.sum @@ -165,8 +165,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/cli v23.0.0-rc.3+incompatible h1:OPrcUDrpApVrVZsZByISt51zID7HT0VxDKa/onvUzOo= -github.com/docker/cli v23.0.0-rc.3+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.0-beta.2+incompatible h1:Kx1C/JV6v/j70nw1uBCC7GqjV/wTZjrOtkn/L3zMCC0= +github.com/docker/cli v24.0.0-beta.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From bc0eaf86034cd174afa362ecf904c7ea13aec9b6 Mon Sep 17 00:00:00 2001 From: rrain7 <49144127+rrain7@users.noreply.github.com> Date: Tue, 18 Apr 2023 12:58:35 +0800 Subject: [PATCH 084/355] feat: friendly prompt when exec `envd init` (#1562) feat: when running `envd init`, check if build.envd exists firstly re #1559 Signed-off-by: hui <13019718290@163.com> --- pkg/app/init.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/app/init.go b/pkg/app/init.go index 2c843b814..574ecdaae 100644 --- a/pkg/app/init.go +++ b/pkg/app/init.go @@ -116,13 +116,22 @@ func isCondaEnvFile(file string) bool { } func initCommand(clicontext *cli.Context) error { - lang := strings.ToLower(clicontext.String("lang")) buildContext, err := filepath.Abs(clicontext.Path("path")) force := clicontext.Bool("force") if err != nil { return err } + filePath := filepath.Join(buildContext, "build.envd") + exists, err := fileutil.FileExists(filePath) + if err != nil { + return err + } + if exists && !force { + return errors.Errorf("build.envd already exists, use --force to overwrite it.\nOr you can run the command `envd up` to set up a new environment.") + } + + lang := strings.ToLower(clicontext.String("lang")) if !isValidLang(lang) { startQuestion(LanguageChoice) if len(selectionMap[LabelLanguage]) > 0 { @@ -139,15 +148,6 @@ func initCommand(clicontext *cli.Context) error { "init", telemetry.AddField("duration", time.Since(start).Seconds())) }(time.Now()) - filePath := filepath.Join(buildContext, "build.envd") - exists, err := fileutil.FileExists(filePath) - if err != nil { - return err - } - if exists && !force { - return errors.Errorf("build.envd already exists, use --force to overwrite it") - } - if lang == "python" { err = InitPythonEnv(buildContext) if err != nil { From f3acdff65d68e9315a0575e0d41c3354fb2562bc Mon Sep 17 00:00:00 2001 From: hang lv <xlv20@fudan.edu.cn> Date: Thu, 20 Apr 2023 21:37:47 +0800 Subject: [PATCH 085/355] fix: compile vscode extensions with user state (#1564) * fix: compile vscode extensions with user state Signed-off-by: hang lv <xlv20@fudan.edu.cn> * fix: install extension in parallel Signed-off-by: hang lv <xlv20@fudan.edu.cn> * fix: merge diffed extensions states Signed-off-by: hang lv <xlv20@fudan.edu.cn> --------- Signed-off-by: hang lv <xlv20@fudan.edu.cn> --- pkg/lang/ir/v1/compile.go | 7 ++----- pkg/lang/ir/v1/editor.go | 10 +++++----- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index c663720ce..5b12f6666 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -336,14 +336,11 @@ func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { if err != nil { return llb.State{}, errors.Wrap(err, "failed to compile entrypoint") } - vscode, err := g.compileVSCode() + vscode, err := g.compileVSCode(entrypoint) if err != nil { return llb.State{}, errors.Wrap(err, "failed to compile VSCode extensions") } - copy = llb.Merge([]llb.State{ - entrypoint, - vscode, - }, llb.WithCustomName("[internal] final dev environment")) + copy = vscode } // it's necessary to exec `run` with the desired user diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index a79556778..63701447c 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -29,11 +29,11 @@ import ( "github.com/tensorchord/envd/pkg/util/fileutil" ) -func (g generalGraph) compileVSCode() (llb.State, error) { +func (g generalGraph) compileVSCode(root llb.State) (llb.State, error) { if len(g.VSCodePlugins) == 0 { - return llb.Scratch(), nil + return root, nil } - inputs := []llb.State{} + inputs := []llb.State{root} for _, p := range g.VSCodePlugins { vscodeClient, err := vscode.NewClient(vscode.MarketplaceVendorOpenVSX) if err != nil { @@ -45,14 +45,14 @@ func (g generalGraph) compileVSCode() (llb.State, error) { return llb.State{}, err } g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) - ext := llb.Scratch().File(llb.Copy(llb.Local(flag.FlagCacheDir), + ext := root.File(llb.Copy(llb.Local(flag.FlagCacheDir), vscodeClient.PluginPath(p), fileutil.EnvdHomeDir(".vscode-server", "extensions", p.String()), &llb.CopyInfo{ CreateDestPath: true, }, llb.WithUIDGID(g.uid, g.gid)), llb.WithCustomNamef("install vscode plugin %s", p.String())) - inputs = append(inputs, ext) + inputs = append(inputs, llb.Diff(root, ext)) } layer := llb.Merge(inputs, llb.WithCustomName("merging plugins for vscode")) return layer, nil From 3e426d25d300fad5b3d903ee35aefbbb26f0564b Mon Sep 17 00:00:00 2001 From: hang lv <xlv20@fudan.edu.cn> Date: Fri, 21 Apr 2023 11:07:15 +0800 Subject: [PATCH 086/355] Download vs code extension by platform (#1566) * fix: download vscode extension by platform Signed-off-by: hang lv <xlv20@fudan.edu.cn> * fix: install vscode extension in serialize Signed-off-by: hang lv <xlv20@fudan.edu.cn> --------- Signed-off-by: hang lv <xlv20@fudan.edu.cn> --- pkg/editor/vscode/types.go | 9 ++--- pkg/editor/vscode/util.go | 68 +++++++++++++++++++++++++++++++++---- pkg/editor/vscode/vscode.go | 23 +++++++------ pkg/lang/ir/v1/editor.go | 16 +++++---- 4 files changed, 87 insertions(+), 29 deletions(-) diff --git a/pkg/editor/vscode/types.go b/pkg/editor/vscode/types.go index f4d5d2eb5..75452f621 100644 --- a/pkg/editor/vscode/types.go +++ b/pkg/editor/vscode/types.go @@ -17,8 +17,8 @@ package vscode import "fmt" const ( - vendorVSCodeTemplate = "https://%s.gallery.vsassets.io/_apis/public/gallery/publisher/%s/extension/%s/%s/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage" - vendorOpenVSXTemplate = "https://open-vsx.org/api/%s/%s/latest" + vendorVSCodeTemplate = "https://%s.gallery.vsassets.io/_apis/public/gallery/publisher/%s/extension/%s/%s/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage?targetPlatform=%s" + vendorOpenVSXTemplate = "https://open-vsx.org/api/%s/%s/latest?targetPlatform=%s" ) type MarketplaceVendor string @@ -31,12 +31,13 @@ const ( type Plugin struct { Publisher string Extension string + Platform string Version *string } func (p Plugin) String() string { if p.Version != nil { - return fmt.Sprintf("%s.%s-%s", p.Publisher, p.Extension, *p.Version) + return fmt.Sprintf("%s.%s-%s@%s", p.Publisher, p.Extension, *p.Version, p.Platform) } - return fmt.Sprintf("%s.%s", p.Publisher, p.Extension) + return fmt.Sprintf("%s.%s@%s", p.Publisher, p.Extension, p.Platform) } diff --git a/pkg/editor/vscode/util.go b/pkg/editor/vscode/util.go index fd9a7e962..4cf28fd1a 100644 --- a/pkg/editor/vscode/util.go +++ b/pkg/editor/vscode/util.go @@ -22,13 +22,64 @@ import ( "strings" "github.com/cockroachdb/errors" + v1 "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" ) +const ( + PLATFORM_WIN32_X64 = "win32-x64" + PLATFORM_WIN32_IA32 = "win32-ia32" + PLATFORM_WIN32_ARM64 = "win32-arm64" + PLATFORM_LINUX_X64 = "linux-x64" + PLATFORM_LINUX_ARM64 = "linux-arm64" + PLATFORM_LINUX_ARMHF = "linux-armhf" + PLATFORM_DARWIN_X64 = "darwin-x64" + PLATFORM_DARWIN_ARM64 = "darwin-arm64" + PLATFORM_ALPINE_X64 = "alpine-x64" +) + +func ConvertLLBPlatform(platform *v1.Platform) (string, error) { + // Convert opencontainers style platform to VSCode extension style platform. + switch platform.OS { + case "windows": + switch platform.Architecture { + case "amd64": + return PLATFORM_WIN32_X64, nil + case "386": + return PLATFORM_WIN32_IA32, nil + case "arm64": + return PLATFORM_WIN32_ARM64, nil + } + case "linux": + switch platform.Architecture { + case "amd64": + return PLATFORM_LINUX_X64, nil + case "arm64": + return PLATFORM_LINUX_ARM64, nil + case "arm": + return PLATFORM_LINUX_ARMHF, nil + } + case "darwin": + switch platform.Architecture { + case "amd64": + return PLATFORM_DARWIN_X64, nil + case "arm64": + return PLATFORM_DARWIN_ARM64, nil + } + case "alpine": + switch platform.Architecture { + case "amd64": + return PLATFORM_ALPINE_X64, nil + } + } + + return "", errors.Errorf("unsupported platform: %s/%s", platform.OS, platform.Architecture) +} + func GetLatestVersionURL(p Plugin) (string, error) { // Auto-detect the version. // Refer to https://github.com/tensorchord/envd/issues/161#issuecomment-1129475975 - latestURL := fmt.Sprintf(vendorOpenVSXTemplate, p.Publisher, p.Extension) + latestURL := fmt.Sprintf(vendorOpenVSXTemplate, p.Publisher, p.Extension, p.Platform) resp, err := http.Get(latestURL) if err != nil { return "", errors.Wrap(err, "failed to get latest version") @@ -41,14 +92,17 @@ func GetLatestVersionURL(p Plugin) (string, error) { if err := json.NewDecoder(resp.Body).Decode(&jsonResp); err != nil { return "", errors.Wrap(err, "failed to decode response") } - if jsonResp["files"] == nil { - return "", errors.New("failed to get latest version: no files") + if jsonResp["downloads"] == nil { + return "", errors.New("failed to get latest version: no downloads") + } + downloads := jsonResp["downloads"].(map[string]interface{}) + if downloads["universal"] != nil { + return downloads["universal"].(string), nil } - files := jsonResp["files"].(map[string]interface{}) - if files["download"] == nil { - return "", errors.New("failed to get latest version: no download url") + if downloads[p.Platform] == nil { + return "", errors.Errorf("failed to get latest version: no target platform %s", p.Platform) } - return files["download"].(string), nil + return downloads[p.Platform].(string), nil } func ParsePlugin(p string) (*Plugin, error) { diff --git a/pkg/editor/vscode/vscode.go b/pkg/editor/vscode/vscode.go index 4a1758cda..b77392c12 100644 --- a/pkg/editor/vscode/vscode.go +++ b/pkg/editor/vscode/vscode.go @@ -60,19 +60,19 @@ func NewClient(vendor MarketplaceVendor) (Client, error) { func (c generalClient) PluginPath(p Plugin) string { if p.Version != nil { - return fmt.Sprintf("%s.%s-%s/extension/", p.Publisher, p.Extension, *p.Version) + return fmt.Sprintf("%s.%s-%s@%s/extension/", p.Publisher, p.Extension, *p.Version, p.Platform) } - return fmt.Sprintf("%s.%s/extension/", p.Publisher, p.Extension) + return fmt.Sprintf("%s.%s@%s/extension/", p.Publisher, p.Extension, p.Platform) } func unzipPath(p Plugin) string { if p.Version != nil { - return fmt.Sprintf("%s/%s.%s-%s", home.GetManager().CacheDir(), - p.Publisher, p.Extension, *p.Version) + return fmt.Sprintf("%s/%s.%s-%s@%s", home.GetManager().CacheDir(), + p.Publisher, p.Extension, *p.Version, p.Platform) } - return fmt.Sprintf("%s/%s.%s", home.GetManager().CacheDir(), - p.Publisher, p.Extension) + return fmt.Sprintf("%s/%s.%s@%s", home.GetManager().CacheDir(), + p.Publisher, p.Extension, p.Platform) } // DownloadOrCache downloads or cache the plugin. @@ -93,23 +93,24 @@ func (c generalClient) DownloadOrCache(p Plugin) (bool, error) { } // TODO(gaocegege): Support version auto-detection. url = fmt.Sprintf(vendorVSCodeTemplate, - p.Publisher, p.Publisher, p.Extension, *p.Version) - filename = fmt.Sprintf("%s/%s.%s-%s.vsix", home.GetManager().CacheDir(), - p.Publisher, p.Extension, *p.Version) + p.Publisher, p.Publisher, p.Extension, *p.Version, p.Platform) + filename = fmt.Sprintf("%s/%s.%s-%s@%s.vsix", home.GetManager().CacheDir(), + p.Publisher, p.Extension, *p.Version, p.Platform) } else { var err error url, err = GetLatestVersionURL(p) if err != nil { return false, errors.Wrap(err, "failed to get latest version url") } - filename = fmt.Sprintf("%s/%s.%s.vsix", home.GetManager().CacheDir(), - p.Publisher, p.Extension) + filename = fmt.Sprintf("%s/%s.%s@%s.vsix", home.GetManager().CacheDir(), + p.Publisher, p.Extension, p.Platform) } logger := logrus.WithFields(logrus.Fields{ "publisher": p.Publisher, "extension": p.Extension, "version": p.Version, + "platform": p.Platform, "url": url, "file": filename, }) diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index 63701447c..391e86188 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -20,6 +20,7 @@ import ( "github.com/cockroachdb/errors" "github.com/moby/buildkit/client/llb" + v1 "github.com/opencontainers/image-spec/specs-go/v1" "github.com/tensorchord/envd/pkg/config" "github.com/tensorchord/envd/pkg/editor/vscode" @@ -30,11 +31,14 @@ import ( ) func (g generalGraph) compileVSCode(root llb.State) (llb.State, error) { - if len(g.VSCodePlugins) == 0 { - return root, nil + // TODO(n063h): support multiple platforms + p := &v1.Platform{Architecture: "amd64", OS: "linux"} + platform, err := vscode.ConvertLLBPlatform(p) + if err != nil { + return llb.State{}, errors.Wrap(err, "failed to convert llb platform") } - inputs := []llb.State{root} for _, p := range g.VSCodePlugins { + p.Platform = platform vscodeClient, err := vscode.NewClient(vscode.MarketplaceVendorOpenVSX) if err != nil { return llb.State{}, errors.Wrap(err, "failed to create vscode client") @@ -45,17 +49,15 @@ func (g generalGraph) compileVSCode(root llb.State) (llb.State, error) { return llb.State{}, err } g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) - ext := root.File(llb.Copy(llb.Local(flag.FlagCacheDir), + root = root.File(llb.Copy(llb.Local(flag.FlagCacheDir), vscodeClient.PluginPath(p), fileutil.EnvdHomeDir(".vscode-server", "extensions", p.String()), &llb.CopyInfo{ CreateDestPath: true, }, llb.WithUIDGID(g.uid, g.gid)), llb.WithCustomNamef("install vscode plugin %s", p.String())) - inputs = append(inputs, llb.Diff(root, ext)) } - layer := llb.Merge(inputs, llb.WithCustomName("merging plugins for vscode")) - return layer, nil + return root, nil } // nolint:unused From 15f62ccb0c2798c6d007261f790a9a08af8c3002 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Apr 2023 11:39:42 +0800 Subject: [PATCH 087/355] docs: updated CHANGELOG.md (#1567) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 785b6f989..57a4ac453 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,25 @@ # Changelog +## v0.3.17 (2023-04-21) + + * [3e426d2](https://github.com/tensorchord/envd/commit/3e426d25d300fad5b3d903ee35aefbbb26f0564b) Download vs code extension by platform (#1566) + * [f3acdff](https://github.com/tensorchord/envd/commit/f3acdff65d68e9315a0575e0d41c3354fb2562bc) fix: compile vscode extensions with user state (#1564) + * [bc0eaf8](https://github.com/tensorchord/envd/commit/bc0eaf86034cd174afa362ecf904c7ea13aec9b6) feat: friendly prompt when exec `envd init` (#1562) + * [c0010cc](https://github.com/tensorchord/envd/commit/c0010cc59de11a4a188bbfccd31d3e8f4ff65892) chore(deps): bump github.com/docker/cli from 23.0.0-rc.3+incompatible to 24.0.0-beta.2+incompatible (#1561) + * [60686bc](https://github.com/tensorchord/envd/commit/60686bc63ad4bf95bac36b67fb890fe940dab1c3) chore(deps): bump crate-ci/typos from 1.14.5 to 1.14.6 (#1560) + * [db8d342](https://github.com/tensorchord/envd/commit/db8d342c1eeb0f41d45b28e6f7b6a82604fb9f4b) chore(deps): bump golang.org/x/crypto from 0.7.0 to 0.8.0 (#1556) + * [e383395](https://github.com/tensorchord/envd/commit/e3833954ef61b1ca1305303565ff1376f5bd1ea2) feat: bring apt-source compilation earlier (#1554) + * [dd48167](https://github.com/tensorchord/envd/commit/dd4816746720a813755f59b72e281c2cdc5ce59b) chore(deps): bump golang.org/x/term from 0.6.0 to 0.7.0 (#1555) + * [c385cb5](https://github.com/tensorchord/envd/commit/c385cb560572c95450a2ba3c3e3f3b9a76f7f9c7) chore(deps): bump crate-ci/typos from 1.14.3 to 1.14.5 (#1557) + * [b36f07e](https://github.com/tensorchord/envd/commit/b36f07ed014bfed87e9703dae47fdd532cb741e4) chore(deps): bump peter-evans/create-pull-request from 4 to 5 (#1558) + * [3393bc5](https://github.com/tensorchord/envd/commit/3393bc56290265f79a97e83b6eab45faae1e6ae7) chore(deps): bump github.com/onsi/gomega from 1.27.5 to 1.27.6 (#1552) + +### Contributors + + * dependabot[bot] + * hang lv + * rrain7 + ## v0.3.16 (2023-03-30) * [04f43da](https://github.com/tensorchord/envd/commit/04f43da45423d18feb3a0899ab3589248be7f701) feat: fall back default builder to buildkit-container (#1548) From e56981a47ecd1e4f8a7684e1cea6b1720476084f Mon Sep 17 00:00:00 2001 From: Alex Xi <68758451+AlexXi19@users.noreply.github.com> Date: Fri, 21 Apr 2023 03:06:11 -0700 Subject: [PATCH 088/355] feat: file sync (#1416) * feat: syncthing installation Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: execute syncthing binary and testing Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: syncthing config Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: mod tidy Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: local syncthing config initialization Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: await apply config Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: add packages Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * fix: remove duplicate code Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: add device connection Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: successfully connect two devices Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: syncthing file sync Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * feat: folder sync and ssh port forward Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: clean up Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: lint and more cleanup Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * fix: better process handling Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: lint Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: add license Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * fix: go.sum Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: refine testing Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: address comments Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * fix: issues Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * fix: go mod tidy and lint Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: add cli flag for file sync Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: address comments Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: pass sync option to server Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: update envd server dependency Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> * chore: update envd server dependency Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> --------- Signed-off-by: AlexXi19 <alex2001314jjj@gmail.com> Signed-off-by: Alex Xi <68758451+AlexXi19@users.noreply.github.com> --- go.mod | 39 +++ go.sum | 466 +++++++++++++++++++++++++++++- pkg/app/destroy.go | 7 + pkg/app/login.go | 1 + pkg/app/run.go | 73 ++++- pkg/envd/envdserver.go | 1 + pkg/envd/types.go | 4 +- pkg/ssh/config/entry.go | 6 +- pkg/ssh/config/ssh_config.go | 4 +- pkg/ssh/config/ssh_config_test.go | 2 +- pkg/ssh/ssh.go | 39 ++- pkg/syncthing/client.go | 92 ++++++ pkg/syncthing/config.go | 132 +++++++++ pkg/syncthing/device.go | 62 ++++ pkg/syncthing/event.go | 101 +++++++ pkg/syncthing/file.go | 108 +++++++ pkg/syncthing/folder.go | 55 ++++ pkg/syncthing/install.go | 143 +++++++++ pkg/syncthing/syncthing.go | 233 +++++++++++++++ pkg/syncthing/syncthing_test.go | 205 +++++++++++++ pkg/syncthing/util.go | 37 +++ 21 files changed, 1800 insertions(+), 10 deletions(-) create mode 100644 pkg/syncthing/client.go create mode 100644 pkg/syncthing/config.go create mode 100644 pkg/syncthing/device.go create mode 100644 pkg/syncthing/event.go create mode 100644 pkg/syncthing/file.go create mode 100644 pkg/syncthing/folder.go create mode 100644 pkg/syncthing/install.go create mode 100644 pkg/syncthing/syncthing.go create mode 100644 pkg/syncthing/syncthing_test.go create mode 100644 pkg/syncthing/util.go diff --git a/go.mod b/go.mod index 42bc364a0..55f922a1c 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,7 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 + github.com/hashicorp/go-getter v1.7.1 github.com/mattn/go-isatty v0.0.18 github.com/moby/buildkit v0.11.4 github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 @@ -36,6 +37,7 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.2 + github.com/syncthing/syncthing v1.23.1 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f @@ -48,13 +50,20 @@ require ( ) require ( + cloud.google.com/go v0.110.0 // indirect + cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go/compute/metadata v0.2.3 // indirect + cloud.google.com/go/iam v0.12.0 // indirect + cloud.google.com/go/storage v1.28.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect + github.com/aws/aws-sdk-go v1.44.122 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect @@ -74,21 +83,33 @@ require ( github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/pprof v0.0.0-20221203041831-ce31453925ec // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect + github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/greatroar/blobloom v0.7.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/klauspost/compress v1.16.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.2 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect @@ -96,8 +117,11 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/minio/sha256-simd v1.0.0 // indirect + github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/locker v1.0.1 // indirect @@ -110,20 +134,31 @@ require ( github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/petermattis/goid v0.0.0-20221202122410-a449aaf35945 // indirect + github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect github.com/rivo/uniseg v0.4.3 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect + github.com/shirou/gopsutil/v3 v3.22.11 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect + github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/thejerf/suture/v4 v4.0.2 // indirect github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // indirect + github.com/ulikunitz/xz v0.5.11 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect + go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect @@ -133,9 +168,13 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.9.0 // indirect + golang.org/x/oauth2 v0.5.0 // indirect golang.org/x/sys v0.7.0 // indirect golang.org/x/text v0.9.0 // indirect golang.org/x/tools v0.7.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.110.0 // indirect + google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect google.golang.org/protobuf v1.28.1 // indirect diff --git a/go.sum b/go.sum index e980eb806..7782b6741 100644 --- a/go.sum +++ b/go.sum @@ -18,27 +18,177 @@ cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHOb cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcbgI= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= @@ -75,12 +225,16 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= github.com/bcicen/ctop v0.7.7/go.mod h1:jO0mmP/wGx4ZEGCWAoMx8DYFNTYNs6YG8wzCGj+DX+Q= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= @@ -93,6 +247,7 @@ github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+ github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -106,6 +261,7 @@ github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XP github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= @@ -160,6 +316,7 @@ github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -191,14 +348,18 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= @@ -237,7 +398,10 @@ github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbV github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= +github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= @@ -263,6 +427,7 @@ github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -270,6 +435,7 @@ github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -287,9 +453,13 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -301,16 +471,22 @@ github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -321,6 +497,12 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20221203041831-ce31453925ec h1:fR20TYVVwhK4O7r7y+McjRYyaTH6/vjwJOajE+XhlzM= github.com/google/pprof v0.0.0-20221203041831-ce31453925ec/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -329,21 +511,48 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3 github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/greatroar/blobloom v0.7.2 h1:F30MGLHOcb4zr0pwCPTcKdlTM70rEgkf+LzdUPc5ss8= +github.com/greatroar/blobloom v0.7.2/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= +github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru/v2 v2.0.1 h1:5pv5N1lT1fjLg2VQ5KWc7kmucp2x/kvFOnxuVTqZ6x4= +github.com/hashicorp/golang-lru/v2 v2.0.1/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -365,6 +574,10 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOl github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jgautheron/codename-generator v0.0.0-20150829203204-16d037c7cc3c/go.mod h1:FJRkXmPrkHw0WDjB/LXMUhjWJ112Y6JUYnIVBOy8oH8= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -384,9 +597,13 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.2 h1:xPMwiykqNK9VK0NYC3+jTMYv9I6Vl3YdjZgPZKG3zO0= +github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -405,14 +622,17 @@ github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awS github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= @@ -425,6 +645,7 @@ github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2J github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.0-20170201023540-14207d285c6c/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= @@ -433,10 +654,16 @@ github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= +github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75/go.mod h1:pBbZyGwC5i16IBkjVKoy/sznA8jPD/K9iedwe1ESE6w= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= @@ -484,13 +711,24 @@ github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= @@ -516,6 +754,11 @@ github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/9 github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= +github.com/petermattis/goid v0.0.0-20221202122410-a449aaf35945 h1:93/WCXPsxmAhOlA/6/PU9aqYkCVssc370u2DdBGTEq8= +github.com/petermattis/goid v0.0.0-20221202122410-a449aaf35945/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= +github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= @@ -528,6 +771,9 @@ github.com/pkg/sftp v1.13.5 h1:a3RLUqkyjYRtBTZJZ1VRrKbN3zhuPLlUc3sphVz81go= github.com/pkg/sftp v1.13.5/go.mod h1:wHDZ0IZX6JcBYRK1TH9bcVq8G7TLpVHYIGJRFnmPfxg= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI= +github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= @@ -546,6 +792,8 @@ github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= +github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= @@ -559,6 +807,8 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= +github.com/shirou/gopsutil/v3 v3.22.11 h1:kxsPKS+Eeo+VnEQ2XCaGJepeP6KY53QoRTETx3+1ndM= +github.com/shirou/gopsutil/v3 v3.22.11/go.mod h1:xl0EeL4vXJ+hQMAGN8B9VFpxukEMA0XdevQOe5MZ1oY= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -599,15 +849,26 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= +github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= +github.com/syncthing/syncthing v1.23.1 h1:VX2vh2h3MXe967kcGDzg27rw83i+7O+kbGw2P18/2Aw= +github.com/syncthing/syncthing v1.23.1/go.mod h1:5VkbpoytVFxjM3gObHsEYs/GlxN9OSJ92AEob4D1SAs= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tensorchord/envd-server v0.0.27 h1:zCJn4tQNplW0G2dtC9tWCKVry6ZulXjnN//6gPtPePg= github.com/tensorchord/envd-server v0.0.27/go.mod h1:z73SMAiAvPo+4mY2xnjxUbJJ0ub1ihbyglPEAOng99I= +github.com/thejerf/suture/v4 v4.0.2 h1:VxIH/J8uYvqJY1+9fxi5GBfGRkRZ/jlSOP6x9HijFQc= +github.com/thejerf/suture/v4 v4.0.2/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= +github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= +github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa h1:XOFp/3aBXlqmOFAg3r6e0qQjPnK5I970LilqX+Is1W8= github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa/go.mod h1:AvLEd1LEIl64G2Jpgwo7aVV5lGH0ePcKl0ygGIHNYl8= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= @@ -618,6 +879,9 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= @@ -648,13 +912,18 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= @@ -727,6 +996,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -756,20 +1026,38 @@ golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -781,8 +1069,24 @@ golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.4.0 h1:NF0gk8LVPg1Ml7SSbGyySuoxdsXitj7TvgvuRxIMc/M= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -794,11 +1098,15 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -813,11 +1121,14 @@ golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -842,10 +1153,15 @@ golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -855,21 +1171,41 @@ golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -877,6 +1213,7 @@ golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXR golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= @@ -889,6 +1226,7 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -947,18 +1285,28 @@ golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82u golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -978,6 +1326,37 @@ google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz513 google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1024,9 +1403,73 @@ google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6D google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= @@ -1049,11 +1492,27 @@ google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -1067,6 +1526,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1075,6 +1535,7 @@ gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= @@ -1083,6 +1544,7 @@ gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= @@ -1091,6 +1553,8 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/pkg/app/destroy.go b/pkg/app/destroy.go index 6e6870345..a8c0be443 100644 --- a/pkg/app/destroy.go +++ b/pkg/app/destroy.go @@ -26,6 +26,7 @@ import ( "github.com/tensorchord/envd/pkg/envd" "github.com/tensorchord/envd/pkg/home" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" + "github.com/tensorchord/envd/pkg/syncthing" ) var CommandDestroy = &cli.Command{ @@ -96,5 +97,11 @@ func destroy(clicontext *cli.Context) error { logrus.Infof("failed to remove entry %s from your SSH config file: %s", ctrName, err) return errors.Wrap(err, "failed to remove entry from your SSH config file") } + + err = syncthing.CleanLocalConfig(name) + if err != nil { + return errors.Wrap(err, "failed to remove syncthing config file") + } + return nil } diff --git a/pkg/app/login.go b/pkg/app/login.go index 831c81d96..d1d916345 100644 --- a/pkg/app/login.go +++ b/pkg/app/login.go @@ -131,6 +131,7 @@ func login(clicontext *cli.Context) error { } } + logger.Debug("login request after register") resp, err = cli.Login(clicontext.Context, req) if err != nil { return errors.Wrap(err, "failed to get the response from envd-server client") diff --git a/pkg/app/run.go b/pkg/app/run.go index fd756e963..30bc5ad60 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -31,7 +31,9 @@ import ( "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/ssh" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" + "github.com/tensorchord/envd/pkg/syncthing" "github.com/tensorchord/envd/pkg/types" + "github.com/tensorchord/envd/pkg/util/fileutil" "github.com/tensorchord/envd/pkg/util/netutil" ) @@ -101,6 +103,11 @@ var CommandCreate = &cli.Command{ Usage: "Request GPU resources (number of gpus), such as 1, 2", Value: "", }, + &cli.BoolFlag{ + Name: "sync", + Usage: "Sync the local directory with the remote container", + Value: false, + }, &cli.StringSliceFlag{ Name: "volume", Usage: "Mount host directory into container", @@ -140,7 +147,9 @@ func run(clicontext *cli.Context) error { EnvironmentName: name, } if c.Runner == types.RunnerTypeEnvdServer { - opt.EnvdServerSource = &envd.EnvdServerSource{} + opt.EnvdServerSource = &envd.EnvdServerSource{ + Sync: clicontext.Bool("sync"), + } if len(clicontext.StringSlice("volume")) > 0 { return errors.New("volume is not supported for envd-server runner") } @@ -177,6 +186,7 @@ func run(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to get the username") } + eo := sshconfig.EntryOptions{ Name: res.Name, IFace: hostname, @@ -228,6 +238,35 @@ func run(clicontext *cli.Context) error { }() } + if clicontext.Bool("sync") { + go func() { + if err := sshClient.LocalForward(syncthing.DefaultRemoteAPIAddress, syncthing.DefaultRemoteAPIAddress); err != nil { + outputChannel <- errors.Wrap(err, "failed to forward to remote api port") + } + }() + + go func() { + syncthingRemoteAddr := fmt.Sprintf("127.0.0.1:%s", syncthing.ParsePortFromAddress(syncthing.DefaultRemoteDeviceAddress)) + if err := sshClient.LocalForward(syncthingRemoteAddr, syncthingRemoteAddr); err != nil { + outputChannel <- errors.Wrap(err, "failed to forward to remote port") + } + }() + + go func() { + syncthingLocalAddr := fmt.Sprintf("127.0.0.1:%s", syncthing.ParsePortFromAddress(syncthing.DefaultLocalDeviceAddress)) + if err := sshClient.RemoteForward(syncthingLocalAddr, syncthingLocalAddr); err != nil { + outputChannel <- errors.Wrap(err, "failed to forward to local port") + } + }() + + localSyncthing, _, err := startSyncthing(res.Name) + if err != nil { + return errors.Wrap(err, "failed to start syncthing") + } + defer localSyncthing.StopLocalSyncthing() + + } + go func() { // TODO(gaocegege): Avoid the hard code. if err := sshClient.Attach(); err != nil { @@ -242,3 +281,35 @@ func run(clicontext *cli.Context) error { } return nil } + +func startSyncthing(name string) (*syncthing.Syncthing, *syncthing.Syncthing, error) { + cwd, err := fileutil.CWD() + if err != nil { + return nil, nil, errors.Wrap(err, "failed to get current working directory") + } + projectName := filepath.Base(cwd) + + localSyncthing, err := syncthing.InitializeLocalSyncthing(name) + if err != nil { + return nil, nil, errors.Wrap(err, "failed to initialize local syncthing") + } + + remoteSyncthing, err := syncthing.InitializeRemoteSyncthing() + if err != nil { + return nil, nil, errors.Wrap(err, "failed to initialize remote syncthing") + } + logrus.Debug("Remote syncthing initialized") + + err = syncthing.ConnectDevices(localSyncthing, remoteSyncthing) + if err != nil { + return nil, nil, errors.Wrap(err, "failed to connect devices") + } + logrus.Debug("Syncthing devices connected") + + err = syncthing.SyncFolder(localSyncthing, remoteSyncthing, cwd, fmt.Sprintf("%s/%s", fileutil.EnvdHomeDir(), projectName)) + if err != nil { + return nil, nil, errors.Wrap(err, "failed to sync folders") + } + + return localSyncthing, remoteSyncthing, nil +} diff --git a/pkg/envd/envdserver.go b/pkg/envd/envdserver.go index 12b69e44f..b17854d9e 100644 --- a/pkg/envd/envdserver.go +++ b/pkg/envd/envdserver.go @@ -285,6 +285,7 @@ func (e *envdServerEngine) StartEnvd(ctx context.Context, so StartOptions) (*Sta }, Spec: servertypes.EnvironmentSpec{ Image: so.Image, + Sync: so.EngineSource.EnvdServerSource.Sync, }, Resources: servertypes.ResourceSpec{ CPU: so.NumCPU, diff --git a/pkg/envd/types.go b/pkg/envd/types.go index 989665900..69f7f0511 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -60,7 +60,9 @@ type DockerSource struct { MountOptions []string } -type EnvdServerSource struct{} +type EnvdServerSource struct { + Sync bool +} type StartResult struct { // TODO(gaocegege): Make result a chan, to send running status to the receiver. diff --git a/pkg/ssh/config/entry.go b/pkg/ssh/config/entry.go index 3f4074c79..43b02b122 100644 --- a/pkg/ssh/config/entry.go +++ b/pkg/ssh/config/entry.go @@ -35,7 +35,7 @@ type EntryOptions struct { // AddEntry adds an entry to the user's sshconfig func AddEntry(eo EntryOptions) error { - eo.Name = buildHostname(eo.Name) + eo.Name = BuildHostname(eo.Name) err := add(getSSHConfigPath(), eo) if err != nil { return err @@ -88,7 +88,7 @@ func add(path string, eo EntryOptions) error { // RemoveEntry removes the entry to the user's sshconfig if found func RemoveEntry(name string) error { - err := remove(getSSHConfigPath(), buildHostname(name)) + err := remove(getSSHConfigPath(), BuildHostname(name)) if err != nil { return err } @@ -98,7 +98,7 @@ func RemoveEntry(name string) error { if err != nil { return err } - err = remove(winSshConfig, buildHostname(name)) + err = remove(winSshConfig, BuildHostname(name)) if err != nil { return err } diff --git a/pkg/ssh/config/ssh_config.go b/pkg/ssh/config/ssh_config.go index 418757255..e39c9e390 100644 --- a/pkg/ssh/config/ssh_config.go +++ b/pkg/ssh/config/ssh_config.go @@ -301,7 +301,7 @@ func (h *host) getParam(keyword string) *param { return nil } -func buildHostname(name string) string { +func BuildHostname(name string) string { return fmt.Sprintf("%s.envd", name) } @@ -386,7 +386,7 @@ func GetPort(name string) (int, error) { return 0, err } - hostname := buildHostname(name) + hostname := BuildHostname(name) i, found := findHost(cfg, hostname) if !found { return 0, errors.Newf("development container not found") diff --git a/pkg/ssh/config/ssh_config_test.go b/pkg/ssh/config/ssh_config_test.go index 5e731e1b2..88c0b78eb 100644 --- a/pkg/ssh/config/ssh_config_test.go +++ b/pkg/ssh/config/ssh_config_test.go @@ -27,7 +27,7 @@ var _ = Describe("ssh config", func() { port := 8888 keyPath := "key" eo := EntryOptions{ - Name: buildHostname(env), + Name: BuildHostname(env), IFace: iface, Port: port, PrivateKeyPath: keyPath, diff --git a/pkg/ssh/ssh.go b/pkg/ssh/ssh.go index c2d74631e..0722551f5 100644 --- a/pkg/ssh/ssh.go +++ b/pkg/ssh/ssh.go @@ -40,6 +40,7 @@ type Client interface { Attach() error ExecWithOutput(cmd string) ([]byte, error) LocalForward(localAddress, targetAddress string) error + RemoteForward(localAddress, targetAddress string) error Close() error } @@ -270,7 +271,7 @@ func (c generalClient) LocalForward(localAddress, targetAddress string) error { return errors.Wrap(err, "net.Listen failed") } - logrus.Debug("begin to forward " + localAddress + " to " + targetAddress) + logrus.Debug("begin to local forward " + localAddress + " to " + targetAddress) for { localCon, err := localListener.Accept() if err != nil { @@ -300,6 +301,42 @@ func (c generalClient) LocalForward(localAddress, targetAddress string) error { } } +func (c generalClient) RemoteForward(remoteAddress, targetAddress string) error { + sshListener, err := c.cli.Listen("tcp", remoteAddress) + if err != nil { + return errors.Wrap(err, "cli.Listen failed") + } + + logrus.Debug("begin to remote forward " + remoteAddress + " to " + targetAddress) + for { + sshCon, err := sshListener.Accept() + if err != nil { + return errors.Wrap(err, "listen.Accept failed") + } + + targetCon, err := net.Dial("tcp", targetAddress) + if err != nil { + return errors.Wrap(err, "net.Dial failed") + } + + // Copy sshCon.Reader to targetCon.Writer + go func() { + _, err = io.Copy(targetCon, sshCon) + if err != nil { + logrus.Debugf("io.Copy failed: %v", err) + } + }() + + // Copy targetCon.Reader to sshCon.Writer + go func() { + _, err = io.Copy(sshCon, targetCon) + if err != nil { + logrus.Debugf("io.Copy failed: %v", err) + } + }() + } +} + func isTerminal(r io.Reader) (int, bool) { switch v := r.(type) { case *os.File: diff --git a/pkg/syncthing/client.go b/pkg/syncthing/client.go new file mode 100644 index 000000000..632994c6b --- /dev/null +++ b/pkg/syncthing/client.go @@ -0,0 +1,92 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "bytes" + "fmt" + "io" + "net/http" + "time" + + "github.com/sirupsen/logrus" +) + +func NewAPIClient() *http.Client { + return &http.Client{ + Timeout: 60 * time.Second, + } +} + +const ( + GET = "GET" + POST = "POST" + PUT = "PUT" +) + +type Client struct { + ApiKey string + Client *http.Client + BasePath string +} + +func (s *Syncthing) NewClient() *Client { + return &Client{ + ApiKey: s.ApiKey, + Client: NewAPIClient(), + BasePath: fmt.Sprintf("http://127.0.0.1:%s", s.Port), + } +} + +// Makes API calls to the syncthing instance's rest api +func (c *Client) SendRequest(method string, url string, params map[string]string, body []byte) ([]byte, error) { + logrus.Debug("calling syncthing API: ", url) + // TODO: can implement retry logic + + var urlPath = c.BasePath + url + + req, err := http.NewRequest(method, urlPath, bytes.NewBuffer(body)) + if err != nil { + return nil, fmt.Errorf("failed to initialize syncthing API request: %w", err) + } + + req.Header.Set("X-API-Key", c.ApiKey) + + q := req.URL.Query() + + for key, value := range params { + q.Add(key, value) + } + + req.URL.RawQuery = q.Encode() + + resp, err := c.Client.Do(req) + if err != nil { + return nil, fmt.Errorf("failed to call syncthing [%s]: %w", url, err) + } + + if resp.StatusCode != http.StatusOK { + return nil, fmt.Errorf("failed to call syncthing [%s]: %s", url, resp.Status) + } + + defer resp.Body.Close() + + body, err = io.ReadAll(resp.Body) + if err != nil { + return nil, fmt.Errorf("failed to read response from syncthing [%s]: %w", url, err) + } + + return body, nil +} diff --git a/pkg/syncthing/config.go b/pkg/syncthing/config.go new file mode 100644 index 000000000..85a73e9b6 --- /dev/null +++ b/pkg/syncthing/config.go @@ -0,0 +1,132 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "encoding/json" + "fmt" + "time" + + "github.com/sirupsen/logrus" + "github.com/syncthing/syncthing/lib/config" +) + +const ( + DefaultLocalPort = "8386" + DefaultRemotePort = "8384" + DefaultRemoteAPIAddress = "127.0.0.1:8384" + DefaultApiKey = "envd" + DefaultLocalDeviceAddress = "tcp://127.0.0.1:22000" + DefaultRemoteDeviceAddress = "tcp://127.0.0.1:22001" +) + +// @source: https://docs.syncthing.net/users/config.html +func InitLocalConfig() *config.Configuration { + return &config.Configuration{ + Version: 37, + GUI: config.GUIConfiguration{ + Enabled: true, + RawAddress: fmt.Sprintf("127.0.0.1:%s", DefaultLocalPort), + APIKey: DefaultApiKey, + Theme: "default", + }, + Options: config.OptionsConfiguration{ + GlobalAnnEnabled: false, + LocalAnnEnabled: false, + ReconnectIntervalS: 1, + StartBrowser: false, + NATEnabled: false, + URAccepted: -1, + URPostInsecurely: false, + URInitialDelayS: 1800, + AutoUpgradeIntervalH: 0, // Disable auto upgrade + StunKeepaliveStartS: 0, // Disable STUN keepalive\ + }, + } +} + +// Fetches the latest configuration from the syncthing rest api +func (s *Syncthing) GetConfig() (*config.Configuration, error) { + resBody, err := s.Client.SendRequest(GET, "/rest/config", nil, nil) + if err != nil { + return nil, fmt.Errorf("failed to fetch syncthing config: %w", err) + } + + cfg := &config.Configuration{} + err = json.Unmarshal(resBody, cfg) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal syncthing config: %w", err) + } + + return cfg, nil +} + +// Fetches the latest configuration from the syncthing rest api and applies it to the syncthing struct +func (s *Syncthing) PullLatestConfig() error { + logrus.Debugf("Pulling latest config for: %s", s.Name) + cfg, err := s.GetConfig() + if err != nil { + return fmt.Errorf("failed to fetch syncthing config: %w", err) + } + + s.Config = cfg + s.PrevConfig = cfg.Copy() + return nil +} + +func (s *Syncthing) WaitForConfigApply(timeout time.Duration) error { + start := time.Now() + for { + if time.Since(start) > timeout { + logrus.Debug("Timeout reached, config not applied") + return fmt.Errorf("timed out waiting for configurations to apply") + } + + events, err := s.GetConfigSavedEvents() + if err != nil { + return fmt.Errorf("failed to get syncthing config saved events: %w", err) + } + + if len(events) > 0 { + err := s.PullLatestConfig() + if err != nil { + return fmt.Errorf("failed to pull latest config: %w", err) + } + return nil + } + + time.Sleep(500 * time.Millisecond) + } +} + +// Applies the config to the syncthing instance and waits for the config to be applied +func (s *Syncthing) ApplyConfig() error { + configByte, err := GetConfigBytes(s.Config, JSON) + if err != nil { + return fmt.Errorf("failed to marshal syncthing config: %w", err) + } + + _, err = s.Client.SendRequest(PUT, "/rest/config", nil, configByte) + if err != nil { + return fmt.Errorf("failed to apply syncthing config: %w", err) + } + + err = s.WaitForConfigApply(10 * time.Second) + if err != nil { + return fmt.Errorf("failed to wait for syncthing config apply: %w", err) + } + + return nil +} diff --git a/pkg/syncthing/device.go b/pkg/syncthing/device.go new file mode 100644 index 000000000..1a0e59c62 --- /dev/null +++ b/pkg/syncthing/device.go @@ -0,0 +1,62 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "fmt" + "strings" + + "github.com/sirupsen/logrus" +) + +func ConnectDevices(s1 *Syncthing, s2 *Syncthing) error { + logrus.Debug(fmt.Sprintf("Connecting syncthings %s and %s", s1.Name, s2.Name)) + var err error + connectedDevices := append(s1.Config.Devices, s2.Config.Devices...) + + s1.Config.Devices = connectedDevices + s2.Config.Devices = connectedDevices + + logrus.Debug("Adding device config for: ", s1.Name) + err = s1.ApplyConfig() + if err != nil { + return err + } + + logrus.Debug("Adding device config for: ", s2.Name) + err = s2.ApplyConfig() + if err != nil { + return err + } + + return nil +} + +// This method can only be called when the devices are not connected +func (s *Syncthing) SetDeviceAddress(addr string) (err error) { + if s.Config.Devices == nil || len(s.Config.Devices) == 0 { + return fmt.Errorf("no devices found") + } + s.DeviceAddress = addr + + // Could work on better identifying which is the current device + s.Config.Devices[0].Addresses = []string{addr} + return nil +} + +func (s *Syncthing) GetDeviceAddressPort() string { + splitLst := strings.Split(s.DeviceAddress, ":") + return splitLst[len(splitLst)-1] +} diff --git a/pkg/syncthing/event.go b/pkg/syncthing/event.go new file mode 100644 index 000000000..2a68e5a1a --- /dev/null +++ b/pkg/syncthing/event.go @@ -0,0 +1,101 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "encoding/json" + "fmt" + "strconv" + + "github.com/sirupsen/logrus" + "github.com/syncthing/syncthing/lib/config" +) + +// Status represents the status of a syncthing folder. +type Status struct { + State string `json:"state"` + PullErrors int64 `json:"pullErrors"` +} + +const ConfigSaved = "ConfigSaved" + +type ConfigSavedEvent struct { + Type string `json:"type"` + Id int64 `json:"id"` + GlobalId int64 `json:"globalID"` + Time string `json:"time"` + Data config.Configuration `json:"data"` +} + +type GeneralEvent struct { + Type string `json:"type"` + Id int64 `json:"id"` + GlobalId int64 `json:"globalID"` + Time string `json:"time"` + Data interface{} `json:"data"` +} + +// Fetches the most recent event using the syncthing rest api +func (s *Syncthing) GetMostRecentEvent() (*GeneralEvent, error) { + resBody, err := s.Client.SendRequest(GET, "/rest/events", nil, nil) + if err != nil { + return nil, fmt.Errorf("failed to get most recent event: %w", err) + } + + var events []*GeneralEvent + err = json.Unmarshal(resBody, &events) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal most recent event: %w", err) + } + + latestEvent := events[len(events)-1] + s.latestEventId = latestEvent.Id + + // Assuming that the events are returned in order + return events[len(events)-1], nil +} + +// Fetches the latest config saved events using the syncthing rest api starting from the latest event id +func (s *Syncthing) GetConfigSavedEvents() ([]*ConfigSavedEvent, error) { + logrus.Debugf("Getting config saved events") + params := map[string]string{ + "since": strconv.FormatInt(s.latestEventId, 10), + "timeout": "0", + } + resBody, err := s.Client.SendRequest(GET, "/rest/events", params, nil) + if err != nil { + return nil, fmt.Errorf("failed to get config saved event: %w", err) + } + + var allEvents []*ConfigSavedEvent + err = json.Unmarshal(resBody, &allEvents) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal config saved event: %w", err) + } + + var events []*ConfigSavedEvent + for _, event := range allEvents { + if event.Type == ConfigSaved { + events = append(events, event) + } + } + + if len(allEvents) > 0 { + latestEvent := allEvents[len(allEvents)-1] + s.latestEventId = latestEvent.Id + } + + return events, nil +} diff --git a/pkg/syncthing/file.go b/pkg/syncthing/file.go new file mode 100644 index 000000000..404012408 --- /dev/null +++ b/pkg/syncthing/file.go @@ -0,0 +1,108 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "encoding/json" + "encoding/xml" + "fmt" + "os" + "path/filepath" + + "github.com/syncthing/syncthing/lib/config" + + "github.com/tensorchord/envd/pkg/util/fileutil" +) + +func GetHomeDirectory() (string, error) { + return fileutil.ConfigFile("syncthing") +} + +func GetConfigFilePath(homeDirectory string) string { + return filepath.Join(homeDirectory, "config.xml") +} + +func (s *Syncthing) WriteLocalConfig() error { + configBytes, err := GetConfigBytes(s.Config, XML) + if err != nil { + return fmt.Errorf("failed to get syncthing config bytes: %w", err) + } + + err = os.MkdirAll(s.HomeDirectory, 0777) + if err != nil { + return fmt.Errorf("failed to : %w", err) + } + + configFilePath := GetConfigFilePath(s.HomeDirectory) + if err = fileutil.CreateIfNotExist(configFilePath); err != nil { + return fmt.Errorf("failed to get syncthing config file path: %w", err) + } + + if err = os.WriteFile(configFilePath, configBytes, 0666); err != nil { + return fmt.Errorf("failed to write syncthing config file: %w", err) + } + return nil +} + +func CleanLocalConfig(name string) error { + configPath, err := GetHomeDirectory() + if err != nil { + return fmt.Errorf("failed to get syncthing config file path: %w", err) + } + + if err := os.RemoveAll(configPath); err != nil { + return fmt.Errorf("failed to remove syncthing config file: %w", err) + } + return nil +} + +const ( + XML = "xml" + JSON = "json" +) + +// Get syncthing configuration in bytes with format XML or JSON +func GetConfigBytes(cfg *config.Configuration, outputType string) (configByte []byte, err error) { + xmlStruct := struct { + XMLName xml.Name `xml:"configuration"` + *config.Configuration + }{ + Configuration: cfg, + } + + jsonStruct := struct { + *config.Configuration + }{ + Configuration: cfg, + } + + switch outputType { + case XML: + + configByte, err = xml.MarshalIndent(xmlStruct, "", " ") + if err != nil { + return []byte{}, err + } + case JSON: + configByte, err = json.MarshalIndent(jsonStruct, "", " ") + if err != nil { + return []byte{}, err + } + default: + return []byte{}, fmt.Errorf("invalid output type: %s", outputType) + } + + return configByte, nil +} diff --git a/pkg/syncthing/folder.go b/pkg/syncthing/folder.go new file mode 100644 index 000000000..94f84c70d --- /dev/null +++ b/pkg/syncthing/folder.go @@ -0,0 +1,55 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import "github.com/syncthing/syncthing/lib/config" + +func SyncFolder(s1 *Syncthing, s2 *Syncthing, dir1 string, dir2 string) error { + baseFolder := config.FolderConfiguration{ + ID: "default", + RescanIntervalS: 5, + FSWatcherEnabled: true, + FSWatcherDelayS: 10, + Devices: []config.FolderDeviceConfiguration{ + { + DeviceID: s1.DeviceID, + }, + { + DeviceID: s2.DeviceID, + }, + }, + } + + s1Folder := baseFolder.Copy() + s2Folder := baseFolder.Copy() + + s1Folder.Path = dir1 + s2Folder.Path = dir2 + + s1.Config.SetFolder(s1Folder) + s2.Config.SetFolder(s2Folder) + + err := s1.ApplyConfig() + if err != nil { + return err + } + + err = s2.ApplyConfig() + if err != nil { + return err + } + + return nil +} diff --git a/pkg/syncthing/install.go b/pkg/syncthing/install.go new file mode 100644 index 000000000..3ecf3e5a6 --- /dev/null +++ b/pkg/syncthing/install.go @@ -0,0 +1,143 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "fmt" + "os" + "path/filepath" + "runtime" + + "github.com/cockroachdb/errors" + "github.com/hashicorp/go-getter" + "github.com/sirupsen/logrus" + + "github.com/tensorchord/envd/pkg/util/fileutil" +) + +func getSyncthingVersion() string { + // TODO: Better versioning + return "1.22.2" +} + +func getSyncthingInstallPath() string { + return filepath.Join(fileutil.DefaultCacheDir, "bin") +} + +func GetSyncthingBinPath() string { + return filepath.Join(getSyncthingInstallPath(), "syncthing") +} + +func getSyncthingDownloadURL(os, arch, version string) (string, error) { + // TODO: double check os/arch support + fileExtension := "tar.gz" + if os == "windows" || os == "macos" { + fileExtension = "zip" + } + + downloadUrl := "https://github.com/syncthing/syncthing/releases/download/v%[3]s/syncthing-%[1]s-%[2]s-v%[3]s.%[4]s" + switch os { + case "linux": + switch arch { + case "amd64", "arm64": + return fmt.Sprintf(downloadUrl, os, arch, version, fileExtension), nil + } + case "macos": + switch arch { + case "amd64", "arm64": + return fmt.Sprintf(downloadUrl, os, arch, version, fileExtension), nil + } + case "windows": + switch arch { + case "amd64": + return fmt.Sprintf(downloadUrl, os, arch, version, fileExtension), nil + } + } + + return "", errors.New(fmt.Sprintf("%s-%s is not a supported platform for syncthing", os, arch)) +} + +func getSyncthingDownloadFolderName(os, arch, version string) string { + return fmt.Sprintf("syncthing-%[1]s-%[2]s-v%[3]s", os, arch, version) +} + +func IsInstalled() bool { + if _, err := os.Stat(GetSyncthingBinPath()); err != nil { + return false + } + return true +} + +func (s *Syncthing) CleanupSyncthing() error { + logrus.Debug("Cleaning up syncthing") + + err := os.RemoveAll(s.HomeDirectory) + if err != nil { + return errors.Wrap(err, "failed to remove syncthing config file: ") + } + + return nil +} + +func InstallSyncthing() error { + logrus.Debug("Installing syncthing") + if IsInstalled() { + logrus.Debug("Syncthing is already installed, skipping installation") + return nil + } + + var operatingSystem = runtime.GOOS + var arch = runtime.GOARCH + var version = getSyncthingVersion() + if operatingSystem == "darwin" { + operatingSystem = "macos" + } + + downloadUrl, err := getSyncthingDownloadURL(operatingSystem, arch, version) + if err != nil { + return err + } + + logrus.Debug("Downloading syncthing from ", downloadUrl) + client := &getter.Client{ + Src: downloadUrl, + Dst: getSyncthingInstallPath(), + Mode: getter.ClientModeDir, + } + + if err := client.Get(); err != nil { + return err + } + + var downloadFolder = fmt.Sprintf("%s/%s", getSyncthingInstallPath(), getSyncthingDownloadFolderName(operatingSystem, arch, version)) + + err = os.Rename(fmt.Sprintf("%s/syncthing", downloadFolder), GetSyncthingBinPath()) + if err != nil { + return err + } + + err = os.RemoveAll(downloadFolder) + if err != nil { + return err + } + + if err := os.Chmod(GetSyncthingBinPath(), 0755); err != nil { + return err + } + + logrus.Info("Syncthing installed successfully!") + + return nil +} diff --git a/pkg/syncthing/syncthing.go b/pkg/syncthing/syncthing.go new file mode 100644 index 000000000..7016ad5c3 --- /dev/null +++ b/pkg/syncthing/syncthing.go @@ -0,0 +1,233 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "fmt" + "os" + "os/exec" + "os/signal" + "syscall" + "time" + + "github.com/sirupsen/logrus" + "github.com/syncthing/syncthing/lib/config" + "github.com/syncthing/syncthing/lib/protocol" +) + +type Syncthing struct { + Name string + Cmd *exec.Cmd + Config *config.Configuration + PrevConfig config.Configuration // Unapplied config + HomeDirectory string + Port string + DeviceID protocol.DeviceID + Client *Client + ApiKey string + latestEventId int64 + DeviceAddress string +} + +// Initializes the remote syncthing instance +func InitializeRemoteSyncthing() (*Syncthing, error) { + s := &Syncthing{ + Name: "Remote Syncthing", + Port: DefaultRemotePort, + HomeDirectory: "/config", + ApiKey: DefaultApiKey, + } + + s.Client = s.NewClient() + + err := s.WaitForStartup(15 * time.Second) + if err != nil { + return nil, fmt.Errorf("failed to wait for syncthing startup: %w", err) + } + + err = s.PullLatestConfig() + if err != nil { + return nil, fmt.Errorf("failed to pull latest config: %w", err) + } + + logrus.Debug("Remote syncthing connected") + + err = s.SetDeviceAddress(DefaultRemoteDeviceAddress) + if err != nil { + return nil, err + } + s.Config.Options.RawListenAddresses = []string{DefaultRemoteDeviceAddress} + s.DeviceID = s.Config.Devices[0].DeviceID + + err = s.ApplyConfig() + if err != nil { + return nil, err + } + + return s, nil +} + +// Initializes the local syncthing instance +func InitializeLocalSyncthing(name string) (*Syncthing, error) { + + initConfig := InitLocalConfig() + homeDirectory, err := GetHomeDirectory() + if err != nil { + return nil, err + } + + s := &Syncthing{ + Name: "Local Syncthing", + Config: initConfig, + HomeDirectory: homeDirectory, + ApiKey: DefaultApiKey, + Port: ParsePortFromAddress(initConfig.GUI.Address()), + } + + s.Client = s.NewClient() + + logrus.Debug("Port for local syncthing is: ", initConfig.GUI.Address()) + + if err != nil { + return nil, err + } + + if err = s.WriteLocalConfig(); err != nil { + return nil, err + } + + err = s.StartLocalSyncthing() + if err != nil { + return nil, err + } + + err = s.PullLatestConfig() + if err != nil { + return nil, fmt.Errorf("failed to pull latest config: %w", err) + } + + err = s.SetDeviceAddress(DefaultLocalDeviceAddress) + if err != nil { + return nil, err + } + + s.Config.Options.RawListenAddresses = []string{DefaultLocalDeviceAddress} + s.DeviceID = s.Config.Devices[0].DeviceID + + err = s.ApplyConfig() + if err != nil { + return nil, err + } + + return s, nil +} + +func (s *Syncthing) StartLocalSyncthing() error { + if !IsInstalled() { + err := InstallSyncthing() + if err != nil { + return fmt.Errorf("failed to install syncthing: %w", err) + } + } + + logrus.Debug("Starting local syncthing...") + cmd := exec.Command(GetSyncthingBinPath(), "-no-restart", "-no-browser", "-home", s.HomeDirectory) + + err := cmd.Start() + if err != nil { + return fmt.Errorf("failed to run syncthing executable: %w", err) + } + s.Cmd = cmd + logrus.Debug("Local syncthing started!") + + err = s.WaitForStartup(10 * time.Second) + if err != nil { + return fmt.Errorf("failed to wait for syncthing startup: %w", err) + } + + // Handle the SIGINT signal + signalChan := make(chan os.Signal, 1) + signal.Notify(signalChan, syscall.SIGINT) + + go func() { + <-signalChan + + err := cmd.Process.Signal(os.Interrupt) + if err != nil { + logrus.Errorf("Failed to send SIGINT to syncthing: %s", err) + } + + err = cmd.Wait() + if err != nil { + logrus.Errorf("Failed to wait for syncthing to exit: %s", err) + } + + os.Exit(0) + }() + + return nil +} + +func (s *Syncthing) Ping() (bool, error) { + _, err := s.Client.SendRequest(GET, "/rest/system/ping", nil, nil) + if err != nil { + logrus.Debug("Failed to ping syncthing: ", err) + return false, fmt.Errorf("failed to ping syncthing: %w", err) + } + + return true, nil +} + +func (s *Syncthing) WaitForStartup(timeout time.Duration) error { + start := time.Now() + for { + if time.Since(start) > timeout { + logrus.Debugf("Timeout reached for syncthing: %s", s.Name) + return fmt.Errorf("timed out waiting for syncthing to start") + } + if ok, _ := s.Ping(); ok { + return nil + } + time.Sleep(500 * time.Millisecond) + } +} + +func (s *Syncthing) StopLocalSyncthing() { + if s.Cmd == nil { + logrus.Error("syncthing is not running") + } + + err := s.Cmd.Process.Signal(syscall.SIGINT) + if err != nil { + logrus.Errorf("failed to kill syncthing process: %s", err) + } + + _, err = s.Cmd.Process.Wait() + if err != nil { + logrus.Errorf("failed to kill syncthing process: %s", err) + } + + if err = CleanLocalConfig(s.Name); err != nil { + logrus.Errorf("failed to clean local syncthing config: %s", err) + } + +} + +func (s *Syncthing) IsRunning() bool { + if s.Cmd == nil { + return false + } + return s.Cmd.Process.Signal(syscall.Signal(0)) == nil +} diff --git a/pkg/syncthing/syncthing_test.go b/pkg/syncthing/syncthing_test.go new file mode 100644 index 000000000..5357bf383 --- /dev/null +++ b/pkg/syncthing/syncthing_test.go @@ -0,0 +1,205 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing_test + +import ( + "fmt" + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + "github.com/sirupsen/logrus" + + "github.com/tensorchord/envd/pkg/syncthing" + "github.com/tensorchord/envd/pkg/util/fileutil" +) + +func TestSyncthing(t *testing.T) { + logrus.SetLevel(logrus.DebugLevel) + RegisterFailHandler(Fail) + RunSpecs(t, "Syncthing Suite") +} + +var _ = Describe("Syncthing", func() { + + BeforeEach(func() { + }) + + Describe("Syncthing", func() { + It("Starts and stops syncthing", func() { + s, err := syncthing.InitializeLocalSyncthing("s1") + Expect(err).To(BeNil()) + + Expect(s.IsRunning()).To(BeTrue()) + + s.StopLocalSyncthing() + + Expect(s.IsRunning()).To(BeFalse()) + }) + }) + + Describe("Syncthing config", func() { + It("Initializes local syncthing configuration", func() { + s, err := syncthing.InitializeLocalSyncthing("s1") + Expect(err).To(BeNil()) + + Expect(s.Port).To(Equal(syncthing.DefaultLocalPort)) + Expect(s.Config.GUI.Address()).To(Equal(fmt.Sprintf("127.0.0.1:%s", syncthing.DefaultLocalPort))) + + dirExists, err := fileutil.DirExists(s.HomeDirectory) + Expect(err).To(BeNil()) + Expect(dirExists).To(BeTrue()) + + configFilePath := syncthing.GetConfigFilePath(s.HomeDirectory) + fileExists, err := fileutil.FileExists(configFilePath) + Expect(err).To(BeNil()) + Expect(fileExists).To(BeTrue()) + + s.StopLocalSyncthing() + }) + + }) + + Describe("Install", func() { + It("Installs binary in cache directory", func() { + err := syncthing.InstallSyncthing() + Expect(err).To(BeNil()) + + Expect(syncthing.IsInstalled()).To(BeTrue()) + }) + }) +}) + +var _ = Describe("Syncthing REST API operations", func() { + var s1 *syncthing.Syncthing + var s2 *syncthing.Syncthing + + BeforeEach(func() { + var err error + initConfig := syncthing.InitLocalConfig() + homeDirectory1, err := syncthing.GetHomeDirectory() + Expect(err).To(BeNil()) + + homeDirectory2, err := syncthing.GetHomeDirectory() + Expect(err).To(BeNil()) + + initConfig1 := initConfig.Copy() + initConfig1.GUI.RawAddress = fmt.Sprintf("127.0.0.1:%s", syncthing.DefaultLocalPort) + s1 = &syncthing.Syncthing{ + Config: &initConfig1, + HomeDirectory: fmt.Sprintf("%s-1", homeDirectory1), + ApiKey: syncthing.DefaultApiKey, + Name: "s1-REST", + Port: syncthing.DefaultLocalPort, + } + + initConfig2 := initConfig.Copy() + initConfig2.GUI.RawAddress = fmt.Sprintf("127.0.0.1:%s", syncthing.DefaultRemotePort) + s2 = &syncthing.Syncthing{ + Config: &initConfig2, + HomeDirectory: fmt.Sprintf("%s-2", homeDirectory2), + ApiKey: syncthing.DefaultApiKey, + Name: "s2-REST", + Port: syncthing.DefaultRemotePort, + } + + s1.Client = s1.NewClient() + s2.Client = s2.NewClient() + + err = s1.WriteLocalConfig() + Expect(err).To(BeNil()) + + err = s2.WriteLocalConfig() + Expect(err).To(BeNil()) + + err = s1.StartLocalSyncthing() + Expect(err).To(BeNil()) + + err = s2.StartLocalSyncthing() + Expect(err).To(BeNil()) + }) + + AfterEach(func() { + s1.StopLocalSyncthing() + + s2.StopLocalSyncthing() + }) + + It("Connects two local devices", func() { + err := syncthing.ConnectDevices(s1, s2) + Expect(err).To(BeNil()) + }) + +}) + +var _ = Describe("Syncthing REST API operations", func() { + var s *syncthing.Syncthing + + BeforeEach(func() { + var err error + s, err = syncthing.InitializeLocalSyncthing("s1") + Expect(err).To(BeNil()) + }) + + AfterEach(func() { + s.StopLocalSyncthing() + }) + + It("Applies syncthing configuration twice", func() { + s.Config.GUI.Debugging = false + Expect(s.Config.GUI.Debugging).To(Equal(false)) + + s.Config.GUI.Debugging = true + + ok, err := s.Ping() + Expect(err).To(BeNil()) + Expect(ok).To(BeTrue()) + + err = s.ApplyConfig() + Expect(err).To(BeNil()) + + cfg, err := s.GetConfig() + Expect(err).To(BeNil()) + Expect(cfg.GUI.Debugging).To(Equal(true)) + + s.Config.GUI.Debugging = false + err = s.ApplyConfig() + Expect(err).To(BeNil()) + + cfg, err = s.GetConfig() + Expect(err).To(BeNil()) + Expect(cfg.GUI.Debugging).To(Equal(false)) + }) + + It("Gets the most recent event", func() { + event, err := s.GetMostRecentEvent() + Expect(err).To(BeNil()) + Expect(event.Id > 0).To(BeTrue()) + }) + +}) + +var _ = Describe("Syncthing util tests", func() { + It("Parses port correctly", func() { + addr := "127.0.0.1:8386" + + port := syncthing.ParsePortFromAddress(addr) + Expect(port).To(Equal("8386")) + + addr2 := "tcp://127.0.0.1:8386" + port2 := syncthing.ParsePortFromAddress(addr2) + Expect(port2).To(Equal("8386")) + }) +}) diff --git a/pkg/syncthing/util.go b/pkg/syncthing/util.go new file mode 100644 index 000000000..d0d93d7ea --- /dev/null +++ b/pkg/syncthing/util.go @@ -0,0 +1,37 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package syncthing + +import ( + "net/url" + "strings" +) + +func ParsePortFromAddress(addr string) string { + if strings.Contains(addr, "://") { + rawUrl, err := url.Parse(addr) + if err != nil { + return "" + } + return rawUrl.Port() + } + + splitLst := strings.Split(addr, ":") + if len(splitLst) == 2 { + return splitLst[1] + } + + return "" +} From ac0dd7eb0516651bbc175e42870ccdecad86ab93 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sat, 22 Apr 2023 16:28:20 +0800 Subject: [PATCH 089/355] fix: remove the lock in progressbar (#1569) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/envd/types.go | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/pkg/envd/types.go b/pkg/envd/types.go index 69f7f0511..f0fbe7664 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -16,7 +16,6 @@ package envd import ( "fmt" - "sync" "time" "github.com/schollz/progressbar/v3" @@ -78,7 +77,6 @@ type ProgressBar struct { currStage int totalStage int notify chan struct{} - lock *sync.Mutex } func InitProgressBar(stage int) *ProgressBar { @@ -90,7 +88,6 @@ func InitProgressBar(stage int) *ProgressBar { fmt.Println() }), ) - var lock sync.Mutex go func() { timer := time.NewTicker(time.Millisecond * 100) @@ -99,9 +96,7 @@ func InitProgressBar(stage int) *ProgressBar { case <-done: return case <-timer.C: - lock.Lock() _ = bar.Add(1) - lock.Unlock() } } }() @@ -110,14 +105,11 @@ func InitProgressBar(stage int) *ProgressBar { notify: done, bar: bar, totalStage: stage, - lock: &lock, } return &b } func (b *ProgressBar) updateTitle(title string) { - b.lock.Lock() - defer b.lock.Unlock() b.currStage += 1 b.bar.Describe(fmt.Sprintf("[cyan][%d/%d][reset] %s", b.currStage, @@ -127,8 +119,6 @@ func (b *ProgressBar) updateTitle(title string) { } func (b *ProgressBar) finish() { - b.lock.Lock() - defer b.lock.Unlock() b.notify <- struct{}{} if err := b.bar.Finish(); err != nil { logrus.Infof("stop progress bar err: %v\n", err) From e2f9e6b180f28735096e8ce70dbe734723fd45c7 Mon Sep 17 00:00:00 2001 From: Huan Xu <hxu296@wisc.edu> Date: Sat, 22 Apr 2023 21:43:11 -0500 Subject: [PATCH 090/355] feat: confirm `envd destroy` when path and name are both empty (#1568) * feat: fail `envd destroy` when path and name are both empty * fix: display user confirmation innstead of failing destroy * feat: additional comment for better clarity --- pkg/app/destroy.go | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/pkg/app/destroy.go b/pkg/app/destroy.go index a8c0be443..16404ab5f 100644 --- a/pkg/app/destroy.go +++ b/pkg/app/destroy.go @@ -15,9 +15,13 @@ package app import ( + "bufio" + "fmt" + "os" "path/filepath" "github.com/cockroachdb/errors" + "github.com/mattn/go-isatty" "github.com/sirupsen/logrus" "github.com/urfave/cli/v2" @@ -51,19 +55,36 @@ var CommandDestroy = &cli.Command{ Action: destroy, } +// Prompts the user to confirm an operation with [Y/n]. +// If the output is not tty, it will return false automatically. +func confirm(prompt string) bool { + isTerminal := isatty.IsTerminal(os.Stdout.Fd()) + if !isTerminal { + return false + } + + reader := bufio.NewReader(os.Stdin) + fmt.Printf("%s [Y/n] ", prompt) + response, err := reader.ReadString('\n') + if err != nil { + return false + } + + response = response[:len(response)-1] // Remove newline character + return response == "y" || response == "Y" || response == "yes" || response == "Yes" +} + func destroy(clicontext *cli.Context) error { path := clicontext.Path("path") name := clicontext.String("name") if path != "" && name != "" { return errors.New("Cannot specify --path and --name at the same time.") } - if path == "" && name == "" { - path = "." - } + var ctrName string if name != "" { ctrName = name - } else { + } else if path != "" { buildContext, err := filepath.Abs(path) if err != nil { return errors.Wrap(err, "failed to get absolute path of the build context") @@ -72,7 +93,22 @@ func destroy(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to create an env name") } + } else { + // Both path and name are empty + // Destroy the environment in the current directory only if user confirms + buildContext, err := filepath.Abs(".") + if err != nil { + return errors.Wrap(err, "failed to get absolute path of the build context") + } + ctrName, err = buildutil.CreateEnvNameFromDir(buildContext) + if err != nil { + return errors.Wrap(err, "failed to create an env name") + } + if !confirm(fmt.Sprintf("Are you sure you want to destroy container %s in the current directory?", ctrName)) { + return nil + } } + context, err := home.GetManager().ContextGetCurrent() if err != nil { return errors.Wrap(err, "failed to get the current context") From 81fe1f4b05ad2d29e9767e55fbd7e3c26d998955 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 23 Apr 2023 11:33:36 +0800 Subject: [PATCH 091/355] docs: updated CHANGELOG.md (#1570) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57a4ac453..0a9244773 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## v0.3.18 (2023-04-23) + + * [e2f9e6b](https://github.com/tensorchord/envd/commit/e2f9e6b180f28735096e8ce70dbe734723fd45c7) feat: confirm `envd destroy` when path and name are both empty (#1568) + * [ac0dd7e](https://github.com/tensorchord/envd/commit/ac0dd7eb0516651bbc175e42870ccdecad86ab93) fix: remove the lock in progressbar (#1569) + * [e56981a](https://github.com/tensorchord/envd/commit/e56981a47ecd1e4f8a7684e1cea6b1720476084f) feat: file sync (#1416) + +### Contributors + + * Alex Xi + * Huan Xu + * Keming + ## v0.3.17 (2023-04-21) * [3e426d2](https://github.com/tensorchord/envd/commit/3e426d25d300fad5b3d903ee35aefbbb26f0564b) Download vs code extension by platform (#1566) From d9bbb3786f87663e7ff7555a58f156dad4a6bec5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 11:11:09 +0800 Subject: [PATCH 092/355] chore(deps): bump crate-ci/typos from 1.14.6 to 1.14.8 (#1571) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.6 to 1.14.8. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.6...v1.14.8) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 9b2e24681..f02621fe7 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.6 + uses: crate-ci/typos@v1.14.8 with: config: ./typos.toml lint: From 42c591385b96bbaa826f70b3e5a7e8293ec1bac3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 14:23:56 +0800 Subject: [PATCH 093/355] chore(deps): bump github.com/syncthing/syncthing from 1.23.1 to 1.23.4 (#1574) Bumps [github.com/syncthing/syncthing](https://github.com/syncthing/syncthing) from 1.23.1 to 1.23.4. - [Release notes](https://github.com/syncthing/syncthing/releases) - [Commits](https://github.com/syncthing/syncthing/compare/v1.23.1...v1.23.4) --- updated-dependencies: - dependency-name: github.com/syncthing/syncthing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 16 ++++++++-------- go.sum | 34 ++++++++++++++++++---------------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 55f922a1c..61d355c07 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.2 - github.com/syncthing/syncthing v1.23.1 + github.com/syncthing/syncthing v1.23.4 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f @@ -92,7 +92,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.5.9 // indirect - github.com/google/pprof v0.0.0-20221203041831-ce31453925ec // indirect + github.com/google/pprof v0.0.0-20230309165930-d61513b1440d // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.0 // indirect @@ -102,14 +102,14 @@ require ( github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.1 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.13 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/klauspost/compress v1.16.0 // indirect - github.com/klauspost/cpuid/v2 v2.2.2 // indirect + github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect @@ -134,17 +134,17 @@ require ( github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect - github.com/petermattis/goid v0.0.0-20221202122410-a449aaf35945 // indirect + github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c // indirect + github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.3 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/shirou/gopsutil/v3 v3.22.11 // indirect + github.com/shirou/gopsutil/v3 v3.23.2 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -177,7 +177,7 @@ require ( google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect - google.golang.org/protobuf v1.28.1 // indirect + google.golang.org/protobuf v1.29.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 7782b6741..5658df3b2 100644 --- a/go.sum +++ b/go.sum @@ -503,8 +503,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20221203041831-ce31453925ec h1:fR20TYVVwhK4O7r7y+McjRYyaTH6/vjwJOajE+XhlzM= -github.com/google/pprof v0.0.0-20221203041831-ce31453925ec/go.mod h1:dDKJzRmX4S37WGHujM7tX//fmj1uioxKzKxz3lo4HJo= +github.com/google/pprof v0.0.0-20230309165930-d61513b1440d h1:um9/pc7tKMINFfP1eE7Wv6PRGXlcCSJkVajF7KJw3uQ= +github.com/google/pprof v0.0.0-20230309165930-d61513b1440d/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -551,8 +551,8 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru/v2 v2.0.1 h1:5pv5N1lT1fjLg2VQ5KWc7kmucp2x/kvFOnxuVTqZ6x4= -github.com/hashicorp/golang-lru/v2 v2.0.1/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/golang-lru/v2 v2.0.2 h1:Dwmkdr5Nc/oBiXgJS3CDHNhJtIHkuZ3DZF5twqnfBdU= +github.com/hashicorp/golang-lru/v2 v2.0.2/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -602,8 +602,8 @@ github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.2 h1:xPMwiykqNK9VK0NYC3+jTMYv9I6Vl3YdjZgPZKG3zO0= -github.com/klauspost/cpuid/v2 v2.2.2/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -755,8 +755,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20221202122410-a449aaf35945 h1:93/WCXPsxmAhOlA/6/PU9aqYkCVssc370u2DdBGTEq8= -github.com/petermattis/goid v0.0.0-20221202122410-a449aaf35945/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 h1:mDrFjGWmndQXmVx3giRScTbkltpPcnGEWG1GorsuiJ4= +github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -772,12 +772,12 @@ github.com/pkg/sftp v1.13.5/go.mod h1:wHDZ0IZX6JcBYRK1TH9bcVq8G7TLpVHYIGJRFnmPfx github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c h1:NRoLoZvkBTKvR5gQLgA3e0hqjkY9u1wm+iOL45VN/qI= -github.com/power-devops/perfstat v0.0.0-20220216144756-c35f1ee13d7c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig= +github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.8.0 h1:ODq8ZFEaYeCaZOJlZZdJA2AbQR98dSHSM1KW/You5mo= +github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= @@ -807,8 +807,8 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= -github.com/shirou/gopsutil/v3 v3.22.11 h1:kxsPKS+Eeo+VnEQ2XCaGJepeP6KY53QoRTETx3+1ndM= -github.com/shirou/gopsutil/v3 v3.22.11/go.mod h1:xl0EeL4vXJ+hQMAGN8B9VFpxukEMA0XdevQOe5MZ1oY= +github.com/shirou/gopsutil/v3 v3.23.2 h1:PAWSuiAszn7IhPMBtXsbSCafej7PqUOvY6YywlQUExU= +github.com/shirou/gopsutil/v3 v3.23.2/go.mod h1:gv0aQw33GLo3pG8SiWKiQrbDzbRY1K80RyZJ7V4Th1M= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -858,8 +858,8 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= -github.com/syncthing/syncthing v1.23.1 h1:VX2vh2h3MXe967kcGDzg27rw83i+7O+kbGw2P18/2Aw= -github.com/syncthing/syncthing v1.23.1/go.mod h1:5VkbpoytVFxjM3gObHsEYs/GlxN9OSJ92AEob4D1SAs= +github.com/syncthing/syncthing v1.23.4 h1:6N1Y9z5GseLDu7Jd6s5Ddybs3jwbnVzp41hGpXTwMhw= +github.com/syncthing/syncthing v1.23.4/go.mod h1:ubSuNWEUtrWsEoOEG8E3jiGQzVXPPD+qynZSTA3dqyg= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -1206,6 +1206,7 @@ golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1527,8 +1528,9 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.0 h1:44S3JjaKmLEE4YIkjzexaP+NzZsudE3Zin5Njn/pYX0= +google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 00cbc47ab31261d2a1ce890974de523979a763fc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 14:29:37 +0800 Subject: [PATCH 094/355] chore(deps): bump pypa/cibuildwheel from 2.12.1 to 2.12.3 (#1572) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.12.1 to 2.12.3. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.12.1...v2.12.3) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 87d5368cf..d7e6b0a0d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.12.1 + uses: pypa/cibuildwheel@v2.12.3 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 78ac026949a967504e01f36e2c379de1d7d02acf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 14:36:33 +0800 Subject: [PATCH 095/355] chore(deps): bump google.golang.org/protobuf from 1.29.0 to 1.29.1 (#1576) Bumps google.golang.org/protobuf from 1.29.0 to 1.29.1. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 61d355c07..c38dbce14 100644 --- a/go.mod +++ b/go.mod @@ -177,7 +177,7 @@ require ( google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect - google.golang.org/protobuf v1.29.0 // indirect + google.golang.org/protobuf v1.29.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 5658df3b2..cf3c0f100 100644 --- a/go.sum +++ b/go.sum @@ -1529,8 +1529,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.0 h1:44S3JjaKmLEE4YIkjzexaP+NzZsudE3Zin5Njn/pYX0= -google.golang.org/protobuf v1.29.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From 599f00164d821f2b3caac5909d623d504c6d8ca4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 14:36:53 +0800 Subject: [PATCH 096/355] chore(deps): bump dependabot/fetch-metadata from 1.3.6 to 1.4.0 (#1573) Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.3.6 to 1.4.0. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.3.6...v1.4.0) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-merge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 17782aebd..3a6a561ec 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.3.6 + uses: dependabot/fetch-metadata@v1.4.0 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Approve PR From ad73e37a17a4142c903d9f7bd4434f67708384fa Mon Sep 17 00:00:00 2001 From: Ce Gao <cegao@tensorchord.ai> Date: Tue, 25 Apr 2023 10:22:36 +0800 Subject: [PATCH 097/355] fix: hard code amd64 to support remote build (#1577) Signed-off-by: Ce Gao <cegao@tensorchord.ai> --- pkg/builder/util.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkg/builder/util.go b/pkg/builder/util.go index 49eafb084..670c132e1 100644 --- a/pkg/builder/util.go +++ b/pkg/builder/util.go @@ -23,7 +23,6 @@ import ( "github.com/cockroachdb/errors" "github.com/containerd/console" - "github.com/containerd/containerd/platforms" "github.com/moby/buildkit/client" gatewayclient "github.com/moby/buildkit/frontend/gateway/client" v1 "github.com/opencontainers/image-spec/specs-go/v1" @@ -37,7 +36,6 @@ const ( func ImageConfigStr(labels map[string]string, ports map[string]struct{}, entrypoint []string, env []string, user string) (string, error) { - pl := platforms.Normalize(platforms.DefaultSpec()) img := v1.Image{ Config: v1.ImageConfig{ Labels: labels, @@ -47,7 +45,7 @@ func ImageConfigStr(labels map[string]string, ports map[string]struct{}, ExposedPorts: ports, Entrypoint: entrypoint, }, - Architecture: pl.Architecture, + Architecture: "amd64", // Refer to https://github.com/tensorchord/envd/issues/269#issuecomment-1152944914 OS: "linux", RootFS: v1.RootFS{ From 6d2b37477929aaadb5a36d7a9d329ce6443b2758 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Apr 2023 10:49:00 +0800 Subject: [PATCH 098/355] docs: updated CHANGELOG.md (#1578) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a9244773..9f322492a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,19 @@ # Changelog +## v0.3.19 (2023-04-25) + + * [ad73e37](https://github.com/tensorchord/envd/commit/ad73e37a17a4142c903d9f7bd4434f67708384fa) fix: hard code amd64 to support remote build (#1577) + * [599f001](https://github.com/tensorchord/envd/commit/599f00164d821f2b3caac5909d623d504c6d8ca4) chore(deps): bump dependabot/fetch-metadata from 1.3.6 to 1.4.0 (#1573) + * [78ac026](https://github.com/tensorchord/envd/commit/78ac026949a967504e01f36e2c379de1d7d02acf) chore(deps): bump google.golang.org/protobuf from 1.29.0 to 1.29.1 (#1576) + * [00cbc47](https://github.com/tensorchord/envd/commit/00cbc47ab31261d2a1ce890974de523979a763fc) chore(deps): bump pypa/cibuildwheel from 2.12.1 to 2.12.3 (#1572) + * [42c5913](https://github.com/tensorchord/envd/commit/42c591385b96bbaa826f70b3e5a7e8293ec1bac3) chore(deps): bump github.com/syncthing/syncthing from 1.23.1 to 1.23.4 (#1574) + * [d9bbb37](https://github.com/tensorchord/envd/commit/d9bbb3786f87663e7ff7555a58f156dad4a6bec5) chore(deps): bump crate-ci/typos from 1.14.6 to 1.14.8 (#1571) + +### Contributors + + * Ce Gao + * dependabot[bot] + ## v0.3.18 (2023-04-23) * [e2f9e6b](https://github.com/tensorchord/envd/commit/e2f9e6b180f28735096e8ce70dbe734723fd45c7) feat: confirm `envd destroy` when path and name are both empty (#1568) From d4e58366802efc444c9e0986d42f3836871abe8a Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 25 Apr 2023 13:11:18 +0800 Subject: [PATCH 099/355] fix: rm the focus in docs v1 test (#1579) fix: docs v1 test Signed-off-by: Keming <kemingyang@tensorchord.ai> --- e2e/v1/docs/rlang_mnist_test.go | 2 +- e2e/v1/docs/suite_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/e2e/v1/docs/rlang_mnist_test.go b/e2e/v1/docs/rlang_mnist_test.go index 44dba44da..cb39f6042 100644 --- a/e2e/v1/docs/rlang_mnist_test.go +++ b/e2e/v1/docs/rlang_mnist_test.go @@ -13,7 +13,7 @@ var _ = Describe("rlang_mnist", Ordered, func() { e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) BeforeAll(e.BuildImage(true)) BeforeEach(e.RunContainer()) - FIt("execute runtime command `Rscript`", func() { + It("execute runtime command `Rscript`", func() { res, err := e.ExecRuntimeCommand("rlang-mnist") Expect(err).To(BeNil()) isNumeric := "TRUE" diff --git a/e2e/v1/docs/suite_test.go b/e2e/v1/docs/suite_test.go index 000291872..fcc7a1e83 100644 --- a/e2e/v1/docs/suite_test.go +++ b/e2e/v1/docs/suite_test.go @@ -30,5 +30,5 @@ func init() { func TestMain(t *testing.T) { RegisterFailHandler(Fail) - RunSpecs(t, "envd cli Suite") + RunSpecs(t, "envd docs Suite") } From 4a38eca4ddffdb3c24361de90cf2102e7c80fdab Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 27 Apr 2023 08:14:03 +0800 Subject: [PATCH 100/355] fix: reduce llb merge in language part if not necessary (#1581) * fix: reduce llb merge in language part if not necessary Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix nil Signed-off-by: Keming <kemingyang@tensorchord.ai> * rm readonly flag Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/destroy.go | 5 +++-- pkg/lang/ir/v1/interface.go | 3 +++ pkg/lang/ir/v1/python.go | 3 +-- pkg/lang/ir/v1/system.go | 42 ++++++++++++++++++++++--------------- 4 files changed, 32 insertions(+), 21 deletions(-) diff --git a/pkg/app/destroy.go b/pkg/app/destroy.go index 16404ab5f..bb8cca5b6 100644 --- a/pkg/app/destroy.go +++ b/pkg/app/destroy.go @@ -71,7 +71,8 @@ func confirm(prompt string) bool { } response = response[:len(response)-1] // Remove newline character - return response == "y" || response == "Y" || response == "yes" || response == "Yes" + // default is "Yes" + return response == "y" || response == "Y" || response == "yes" || response == "Yes" || response == "" } func destroy(clicontext *cli.Context) error { @@ -104,7 +105,7 @@ func destroy(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to create an env name") } - if !confirm(fmt.Sprintf("Are you sure you want to destroy container %s in the current directory?", ctrName)) { + if !confirm(fmt.Sprintf("Are you sure you want to destroy container `%s` in the current directory?", ctrName)) { return nil } } diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index ba94efffe..50a6c97a4 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -246,6 +246,9 @@ func CondaChannel(channel string) error { func CondaPackage(deps []string, channel []string, envFile string) error { g := DefaultGraph.(*generalGraph) + if g.CondaConfig == nil { + return errors.New("cannot install conda packages when conda is not installed") + } g.CondaConfig.CondaPackages = append( g.CondaConfig.CondaPackages, deps...) diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 2f1612baf..38a70fbeb 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -137,8 +137,7 @@ func (g generalGraph) compilePyPIPackages(root llb.State) llb.State { llb.WithCustomNamef("pip install -r %s", *g.RequirementsFile)) run.AddMount(cacheDir, cache, llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache/pip")) - run.AddMount(g.getWorkingDir(), - llb.Local(flag.FlagBuildContext)) + run.AddMount(g.getWorkingDir(), llb.Local(flag.FlagBuildContext)) root = run.Root() } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 8a74d98b6..b88b4b6a9 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -229,7 +229,7 @@ func (g *generalGraph) compileExtraSource(root llb.State) (llb.State, error) { } func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { - langs := []llb.State{root} + langs := []llb.State{} lang := root var err error for _, language := range g.Languages { @@ -242,38 +242,46 @@ func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { case "julia": lang = g.installJulia(root) } - langs = append(langs, llb.Diff(root, lang, llb.WithCustomNamef("[internal] build %s environments", language.Name))) + langs = append(langs, lang) } - return llb.Merge(langs, llb.WithCustomName("[internal] build all language environments")), err + if len(langs) <= 1 { + return lang, err + } + for i, lang := range g.Languages { + langs[i] = llb.Diff(root, langs[i], llb.WithCustomNamef("[internal] build %s env", lang.Name)) + } + return llb.Merge(append([]llb.State{root}, langs...), + llb.WithCustomName("[internal] merge all the language environments")), err } func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { - packs := []llb.State{root} + packs := []llb.State{} pack := root for _, language := range g.Languages { switch language.Name { case "python": index := g.compilePyPIIndex(root) - pypi := g.compilePyPIPackages(index) - if g.CondaConfig == nil { - pack = pypi - } else { - channel := g.compileCondaChannel(root) - conda := g.compileCondaPackages(channel) - pack = llb.Merge([]llb.State{ - root, - llb.Diff(root, pypi, llb.WithCustomName("[internal] PyPI packages")), - llb.Diff(root, conda, llb.WithCustomName("[internal] conda packages")), - }, llb.WithCustomName("[internal] Python packages")) + pack = g.compilePyPIPackages(index) + if g.CondaConfig != nil { + channel := g.compileCondaChannel(pack) + pack = g.compileCondaPackages(channel) } case "r": pack = g.installRPackages(root) case "julia": pack = g.installJuliaPackages(root) } - packs = append(packs, llb.Diff(root, pack, llb.WithCustomNamef("[internal] install %s's packages", language.Name))) + packs = append(packs, pack) + } + if len(packs) <= 1 { + // there is only one language needs to be installed, thus no need to merge + return pack + } + for i, lang := range g.Languages { + packs[i] = llb.Diff(root, packs[i], llb.WithCustomNamef("[internal] get diff of %s's packages", lang.Name)) } - return llb.Merge(packs, llb.WithCustomName("[internal] install packages for all language environments")) + return llb.Merge(append([]llb.State{root}, packs...), + llb.WithCustomName("[internal] merge packages for all language environments")) } func (g *generalGraph) compileDevPackages(root llb.State) llb.State { From f638d07b6afc4d341b29fc315d60881cab354e9f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 10:47:43 +0800 Subject: [PATCH 101/355] chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 (#1584) chore(deps): bump github.com/opencontainers/image-spec Bumps [github.com/opencontainers/image-spec](https://github.com/opencontainers/image-spec) from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3. - [Release notes](https://github.com/opencontainers/image-spec/releases) - [Changelog](https://github.com/opencontainers/image-spec/blob/main/RELEASES.md) - [Commits](https://github.com/opencontainers/image-spec/commits/v1.1.0-rc3) --- updated-dependencies: - dependency-name: github.com/opencontainers/image-spec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 7 ++----- go.sum | 26 +++++++++----------------- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/go.mod b/go.mod index c38dbce14..a1ffdc973 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 - github.com/containerd/containerd v1.7.0 + github.com/containerd/containerd v1.6.19 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.0-beta.2+incompatible github.com/docker/docker v23.0.0-rc.1+incompatible @@ -29,7 +29,7 @@ require ( github.com/onsi/ginkgo/v2 v2.9.2 github.com/onsi/gomega v1.27.6 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b + github.com/opencontainers/image-spec v1.1.0-rc2 github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.1 @@ -55,7 +55,6 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v0.12.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect @@ -70,9 +69,7 @@ require ( github.com/containerd/continuity v0.3.0 // indirect github.com/containerd/ttrpc v1.2.1 // indirect github.com/containerd/typeurl v1.0.2 // indirect - github.com/containerd/typeurl/v2 v2.1.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect diff --git a/go.sum b/go.sum index cf3c0f100..bdd748e30 100644 --- a/go.sum +++ b/go.sum @@ -190,9 +190,6 @@ cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuW cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -208,7 +205,7 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.10.0-rc.7 h1:HBytQPxcv8Oy4244zbQbe6hnOnx544eL5QPUqhJldz8= +github.com/Microsoft/hcsshim v0.9.7 h1:mKNHW/Xvv1aFH87Jb6ERDzXTJTLPlmzfZ28VBFD/bfg= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= @@ -272,21 +269,21 @@ github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5w github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.7.0 h1:G/ZQr3gMZs6ZT0qPUZ15znx5QSdQdASW11nXTLTM2Pg= -github.com/containerd/containerd v1.7.0/go.mod h1:QfR7Efgb/6X2BDpTPJRvPTYDE9rsF0FsXX9J8sIs/sc= +github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= +github.com/containerd/containerd v1.6.19/go.mod h1:HZCDMn4v/Xl2579/MvtOC2M206i+JJ6VxFWU/NetrGY= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= +github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= @@ -297,8 +294,6 @@ github.com/containerd/ttrpc v1.2.1/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/typeurl/v2 v2.1.0 h1:yNAhJvbNEANt7ck48IlEGOxP7YAp6LLpGn5jZACDNIE= -github.com/containerd/typeurl/v2 v2.1.0/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -314,8 +309,6 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -679,7 +672,6 @@ github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7s github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= -github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -737,17 +729,17 @@ github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.4 h1:nRCz/8sKg6K6jgYAFLDlXzPeITBZJyX28DBVhWD+5dg= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= +github.com/opencontainers/selinux v1.10.2 h1:NFy2xCsjn7+WspbfZkUd5zyVeisV7VFbPSP96+8/ha4= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= From 9673a1fdff7b38cc3f230931e6138eddbc38a5af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 10:48:16 +0800 Subject: [PATCH 102/355] chore(deps): bump github.com/urfave/cli/v2 from 2.25.1 to 2.25.2 (#1586) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.1 to 2.25.2. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.1...v2.25.2) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a1ffdc973..f30b92a12 100644 --- a/go.mod +++ b/go.mod @@ -41,7 +41,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.25.1 + github.com/urfave/cli/v2 v2.25.2 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.8.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index bdd748e30..2c9e8fc36 100644 --- a/go.sum +++ b/go.sum @@ -876,8 +876,8 @@ github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= -github.com/urfave/cli/v2 v2.25.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.2 h1:rgeK7wmjwH+d3DqXDDSV20GZAvNzmzu/VEsg1om3Qwg= +github.com/urfave/cli/v2 v2.25.2/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 6e055c61fdc1cdba6959c8a54ead5aad6654090e Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 2 May 2023 17:21:55 +0800 Subject: [PATCH 103/355] feat: inherit entrypoint from the base image (#1587) * feat: inherit entrypoint from the base image Signed-off-by: Keming <kemingyang@tensorchord.ai> * only enable when dev=False Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 34 ++++++++++++---- go.sum | 88 ++++++++++++++++++++++++++++++---------- pkg/lang/ir/util.go | 32 +++++++++++++++ pkg/lang/ir/v1/system.go | 10 +++++ 4 files changed, 135 insertions(+), 29 deletions(-) diff --git a/go.mod b/go.mod index f30b92a12..8e2d209cf 100644 --- a/go.mod +++ b/go.mod @@ -10,9 +10,10 @@ require ( github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 github.com/containerd/containerd v1.6.19 + github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.0-beta.2+incompatible - github.com/docker/docker v23.0.0-rc.1+incompatible + github.com/docker/docker v23.0.2+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 @@ -23,7 +24,7 @@ require ( github.com/hashicorp/go-getter v1.7.1 github.com/mattn/go-isatty v0.0.18 github.com/moby/buildkit v0.11.4 - github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 + github.com/moby/term v0.0.0-20221120202655-abb19827d345 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.9.2 @@ -56,6 +57,7 @@ require ( cloud.google.com/go/iam v0.12.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.0 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect @@ -69,6 +71,9 @@ require ( github.com/containerd/continuity v0.3.0 // indirect github.com/containerd/ttrpc v1.2.1 // indirect github.com/containerd/typeurl v1.0.2 // indirect + github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect + github.com/containers/ocicrypt v1.1.7 // indirect + github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.1+incompatible // indirect @@ -93,20 +98,25 @@ require ( github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/gorilla/mux v1.8.0 // indirect github.com/greatroar/blobloom v0.7.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect + github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.2 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/imdario/mergo v0.3.13 // indirect + github.com/imdario/mergo v0.3.15 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect - github.com/klauspost/compress v1.16.0 // indirect + github.com/klauspost/compress v1.16.3 // indirect github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/kr/text v0.2.0 // indirect @@ -123,19 +133,24 @@ require ( github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.5.0 // indirect + github.com/moby/sys/mountinfo v0.6.2 // indirect github.com/moby/sys/signal v0.7.0 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.1 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect + github.com/opencontainers/runc v1.1.5 // indirect + github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect - github.com/rivo/uniseg v0.4.3 // indirect + github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.8.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect @@ -148,10 +163,12 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 // indirect + github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thejerf/suture/v4 v4.0.2 // indirect github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // indirect github.com/ulikunitz/xz v0.5.11 // indirect + github.com/vbatts/tar-split v0.11.3 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.2 // indirect @@ -163,9 +180,10 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.9.0 // indirect golang.org/x/net v0.9.0 // indirect - golang.org/x/oauth2 v0.5.0 // indirect + golang.org/x/oauth2 v0.6.0 // indirect golang.org/x/sys v0.7.0 // indirect golang.org/x/text v0.9.0 // indirect golang.org/x/tools v0.7.0 // indirect @@ -173,8 +191,8 @@ require ( google.golang.org/api v0.110.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect - google.golang.org/grpc v1.53.0 // indirect - google.golang.org/protobuf v1.29.1 // indirect + google.golang.org/grpc v1.54.0 // indirect + google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 2c9e8fc36..47ed09462 100644 --- a/go.sum +++ b/go.sum @@ -195,6 +195,8 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= +github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= @@ -205,7 +207,7 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.9.7 h1:mKNHW/Xvv1aFH87Jb6ERDzXTJTLPlmzfZ28VBFD/bfg= +github.com/Microsoft/hcsshim v0.9.8 h1:lf7xxK2+Ikbj9sVf2QZsouGjRjEp2STj1yDHgoVtU5k= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= @@ -244,12 +246,14 @@ github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+ github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= +github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -287,13 +291,21 @@ github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= -github.com/containerd/stargz-snapshotter/estargz v0.13.0 h1:fD7AwuVV+B40p0d9qVkH/Au1qhp8hn/HWJHIYjpEcfw= +github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/ttrpc v1.2.1 h1:VWv/Rzx023TBLv4WQ+9WPXlBG/s3rsRjY3i9AJ2BJdE= github.com/containerd/ttrpc v1.2.1/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= +github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= +github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= +github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= +github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U= +github.com/containers/ocicrypt v1.1.7/go.mod h1:7CAhjcj2H8AYp5YvEie7oVSK2AhBY8NscCYRawuDNtw= +github.com/containers/storage v1.46.0 h1:K3Tw/U+ZwmMT/tzX04mh5wnK2PuIdEGS2BGMP7ZYAqw= +github.com/containers/storage v1.46.0/go.mod h1:AVNewDV1jODy8b4Ia4AgsJ6UFKQSIaOQvQ8S6N4VuH0= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -309,6 +321,7 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -402,6 +415,7 @@ github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6Wezm github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -533,10 +547,15 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2 github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= +github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= +github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= @@ -553,8 +572,8 @@ github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:q github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= -github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= +github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -573,6 +592,8 @@ github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGw github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= @@ -591,12 +612,14 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.0 h1:iULayQNOReoYUe+1qtKOqw9CwJv3aNQu8ivo7lw1HU4= -github.com/klauspost/compress v1.16.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= +github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 h1:BcxbplxjtczA1a6d3wYoa7a0WL3rq9DKBMGHeKyjEF0= +github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -647,6 +670,7 @@ github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= +github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= @@ -671,16 +695,21 @@ github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YO github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= +github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 h1:dcztxKSvZ4Id8iPpHERQBbIJfabdt4wUm5qy3wOL2Zc= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= +github.com/moby/term v0.0.0-20221120202655-abb19827d345 h1:J9c53/kxIH+2nTKBEfZYFMlhghtHpIHSXpm5VRGHSnU= +github.com/moby/term v0.0.0-20221120202655-abb19827d345/go.mod h1:15ce4BGCFxt7I5NQKT+HV0yEDxmf6fSysfEDiVo3zFM= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= @@ -729,17 +758,21 @@ github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.4 h1:nRCz/8sKg6K6jgYAFLDlXzPeITBZJyX28DBVhWD+5dg= +github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= +github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417 h1:3snG66yBm59tKhhSPQrQ/0bCrv1LQbKt40LnUPiUxdc= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= +github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.10.2 h1:NFy2xCsjn7+WspbfZkUd5zyVeisV7VFbPSP96+8/ha4= +github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= +github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= @@ -772,8 +805,8 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.3 h1:utMvzDsuh3suAEnhH0RdHmoPbU648o6CvXxTx4SBMOw= -github.com/rivo/uniseg v0.4.3/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -790,6 +823,7 @@ github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtm github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= @@ -805,6 +839,7 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= @@ -830,6 +865,7 @@ github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -852,6 +888,7 @@ github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= github.com/syncthing/syncthing v1.23.4 h1:6N1Y9z5GseLDu7Jd6s5Ddybs3jwbnVzp41hGpXTwMhw= github.com/syncthing/syncthing v1.23.4/go.mod h1:ubSuNWEUtrWsEoOEG8E3jiGQzVXPPD+qynZSTA3dqyg= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -876,6 +913,7 @@ github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.2 h1:rgeK7wmjwH+d3DqXDDSV20GZAvNzmzu/VEsg1om3Qwg= github.com/urfave/cli/v2 v2.25.2/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= @@ -884,7 +922,8 @@ github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBn github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= -github.com/vbatts/tar-split v0.11.2 h1:Via6XqJr0hceW4wff3QRzD5gAk/tatMw/4ZA7cTlIME= +github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= +github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= @@ -907,6 +946,7 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -963,6 +1003,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1077,8 +1119,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.5.0 h1:HuArIo48skDwlrvM3sEdHXElYslAMsf3KwRkkW4MC4s= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1170,10 +1212,12 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1195,6 +1239,7 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1503,8 +1548,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.53.0 h1:LAv2ds7cmFV/XTS3XG1NneeENYrXGmorPxsBbptIjNc= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1521,8 +1566,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1 h1:7QBf+IK2gx70Ap/hDsOmam3GE0v9HicjfEdAxE62UoM= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1538,6 +1583,7 @@ gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -1558,8 +1604,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pkg/lang/ir/util.go b/pkg/lang/ir/util.go index 204b093b3..391c63682 100644 --- a/pkg/lang/ir/util.go +++ b/pkg/lang/ir/util.go @@ -15,11 +15,43 @@ package ir import ( + "context" "encoding/json" + "fmt" "github.com/cockroachdb/errors" + "github.com/containers/image/v5/docker" + "github.com/containers/image/v5/image" + "github.com/containers/image/v5/types" + v1 "github.com/opencontainers/image-spec/specs-go/v1" ) +func FetchImageConfig(ctx context.Context, imageName string) (config v1.ImageConfig, err error) { + ref, err := docker.ParseReference(fmt.Sprintf("//%s", imageName)) + if err != nil { + return config, errors.Wrap(err, "failed to parse image reference") + } + sys := types.SystemContext{} + src, err := ref.NewImageSource(ctx, &sys) + if err != nil { + return config, errors.Wrap(err, "failed to get image source from ref") + } + defer src.Close() + digest, err := docker.GetDigest(ctx, &sys, ref) + if err != nil { + return config, errors.Wrap(err, "failed to get the image digest") + } + image, err := image.FromUnparsedImage(ctx, &sys, image.UnparsedInstance(src, &digest)) + if err != nil { + return config, errors.Wrap(err, "failed to get unparsed image") + } + img, err := image.OCIConfig(ctx) + if err != nil { + return config, errors.Wrap(err, "failed to get OCI config") + } + return img.Config, nil +} + func (rg *RuntimeGraph) Dump() (string, error) { b, err := json.Marshal(rg) if err != nil { diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index b88b4b6a9..3f1f90ef0 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -351,6 +351,16 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { base = base.AddEnv(k, v) } + if !g.Dev { + // fetching the image config may take some time + config, err := ir.FetchImageConfig(context.Background(), g.Image) + if err != nil { + return llb.State{}, err + } + if len(g.Entrypoint) == 0 { + g.Entrypoint = config.Entrypoint + } + } // TODO: inherit the USER from base g.User = "" return base, nil From 528d083af56ed26e6105d8474feb0a206f83c9c0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 2 May 2023 17:42:23 +0800 Subject: [PATCH 104/355] docs: updated CHANGELOG.md (#1588) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f322492a..639169609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## v0.3.20 (2023-05-02) + + * [6e055c6](https://github.com/tensorchord/envd/commit/6e055c61fdc1cdba6959c8a54ead5aad6654090e) feat: inherit entrypoint from the base image (#1587) + * [9673a1f](https://github.com/tensorchord/envd/commit/9673a1fdff7b38cc3f230931e6138eddbc38a5af) chore(deps): bump github.com/urfave/cli/v2 from 2.25.1 to 2.25.2 (#1586) + * [f638d07](https://github.com/tensorchord/envd/commit/f638d07b6afc4d341b29fc315d60881cab354e9f) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 (#1584) + * [4a38eca](https://github.com/tensorchord/envd/commit/4a38eca4ddffdb3c24361de90cf2102e7c80fdab) fix: reduce llb merge in language part if not necessary (#1581) + * [d4e5836](https://github.com/tensorchord/envd/commit/d4e58366802efc444c9e0986d42f3836871abe8a) fix: rm the focus in docs v1 test (#1579) + +### Contributors + + * Keming + * dependabot[bot] + ## v0.3.19 (2023-04-25) * [ad73e37](https://github.com/tensorchord/envd/commit/ad73e37a17a4142c903d9f7bd4434f67708384fa) fix: hard code amd64 to support remote build (#1577) From 7089bda5d8fb6d5d994777b4e83b3f3a96b62b09 Mon Sep 17 00:00:00 2001 From: Zhizhen He <hezhizhen.yi@gmail.com> Date: Wed, 3 May 2023 12:53:16 +0800 Subject: [PATCH 105/355] chore: update copyright (#1583) Signed-off-by: Zhizhen He <hezhizhen.yi@gmail.com> --- cmd/envd-sshd/main.go | 4 ++-- cmd/envd/main.go | 2 +- e2e/v0/cli/build_test.go | 4 ++-- e2e/v0/cli/bytecode_hash_test.go | 4 ++-- e2e/v0/cli/context_test.go | 4 ++-- e2e/v0/cli/get_env_test.go | 4 ++-- e2e/v0/cli/init_test.go | 4 ++-- e2e/v0/cli/quick_start_test.go | 4 ++-- e2e/v0/cli/suite_test.go | 2 +- e2e/v0/cli/up_test.go | 4 ++-- e2e/v0/docs/docs_gpu_test.go | 4 ++-- e2e/v0/docs/docs_test.go | 4 ++-- e2e/v0/docs/suite_test.go | 2 +- e2e/v0/e2e_helper.go | 2 +- e2e/v0/language/python_test.go | 4 ++-- e2e/v0/language/runtime_test.go | 4 ++-- e2e/v0/language/suite_test.go | 2 +- e2e/v1/cli/build_test.go | 4 ++-- e2e/v1/cli/bytecode_hash_test.go | 4 ++-- e2e/v1/cli/context_test.go | 4 ++-- e2e/v1/cli/get_env_test.go | 4 ++-- e2e/v1/cli/init_test.go | 4 ++-- e2e/v1/cli/quick_start_test.go | 4 ++-- e2e/v1/cli/suite_test.go | 2 +- e2e/v1/cli/up_test.go | 4 ++-- e2e/v1/docs/docs_gpu_test.go | 4 ++-- e2e/v1/docs/docs_test.go | 4 ++-- e2e/v1/docs/extra_lang_test.go | 4 ++-- e2e/v1/docs/julia_mnist_test.go | 16 +++++++++++++++- e2e/v1/docs/rlang_mnist_test.go | 16 +++++++++++++++- e2e/v1/docs/suite_test.go | 2 +- e2e/v1/e2e_helper.go | 2 +- e2e/v1/language/python_test.go | 4 ++-- e2e/v1/language/runtime_test.go | 4 ++-- e2e/v1/language/suite_test.go | 2 +- pkg/app/app.go | 2 +- pkg/app/bootstrap.go | 2 +- pkg/app/build.go | 2 +- pkg/app/build/build.go | 2 +- pkg/app/completion.go | 2 +- pkg/app/const.go | 2 +- pkg/app/context.go | 2 +- pkg/app/context_create.go | 2 +- pkg/app/context_ls.go | 2 +- pkg/app/context_rm.go | 2 +- pkg/app/context_use.go | 2 +- pkg/app/debug.go | 2 +- pkg/app/debug_llb.go | 2 +- pkg/app/destroy.go | 2 +- pkg/app/env.go | 2 +- pkg/app/env_describe.go | 2 +- pkg/app/env_ls.go | 2 +- pkg/app/exec.go | 2 +- pkg/app/formatter/data.go | 2 +- pkg/app/formatter/json/context.go | 2 +- pkg/app/formatter/json/env.go | 2 +- pkg/app/formatter/json/image.go | 2 +- pkg/app/formatter/json/print.go | 2 +- pkg/app/formatter/json/version.go | 2 +- pkg/app/formatter/table/context.go | 2 +- pkg/app/formatter/table/env.go | 2 +- pkg/app/formatter/table/image.go | 2 +- pkg/app/formatter/table/version.go | 2 +- pkg/app/image.go | 2 +- pkg/app/image_describe.go | 2 +- pkg/app/image_prune.go | 2 +- pkg/app/image_prune_test.go | 2 +- pkg/app/image_remove.go | 2 +- pkg/app/init.go | 2 +- pkg/app/interactive.go | 2 +- pkg/app/login.go | 2 +- pkg/app/pause.go | 2 +- pkg/app/prune.go | 2 +- pkg/app/resume.go | 2 +- pkg/app/run.go | 2 +- pkg/app/telemetry/reporter.go | 2 +- pkg/app/top.go | 2 +- pkg/app/up.go | 2 +- pkg/app/version.go | 2 +- pkg/autocomplete/bash.go | 2 +- pkg/autocomplete/zsh.go | 2 +- pkg/builder/build.go | 2 +- pkg/builder/build_func.go | 2 +- pkg/builder/builder.go | 2 +- pkg/builder/builder_suite_test.go | 2 +- pkg/builder/builder_test.go | 2 +- pkg/builder/dep_check.go | 2 +- pkg/builder/err.go | 2 +- pkg/builder/types.go | 2 +- pkg/builder/util.go | 2 +- pkg/builder/util_test.go | 2 +- pkg/buildkitd/buildkitd.go | 2 +- pkg/buildkitd/print.go | 2 +- pkg/config/config.go | 5 +++-- pkg/data/datasource.go | 2 +- pkg/data/envd.go | 2 +- pkg/driver/docker/docker.go | 2 +- pkg/driver/docker/docker_suite_test.go | 2 +- pkg/driver/docker/docker_test.go | 2 +- pkg/driver/docker/label.go | 2 +- pkg/driver/nerdctl/nerdctl.go | 6 +++--- pkg/editor/vscode/types.go | 2 +- pkg/editor/vscode/util.go | 2 +- pkg/editor/vscode/vscode.go | 2 +- pkg/editor/vscode/vscode_suite_test.go | 2 +- pkg/editor/vscode/vscode_test.go | 2 +- pkg/envd/docker.go | 2 +- pkg/envd/engine.go | 2 +- pkg/envd/envdserver.go | 2 +- pkg/envd/factory.go | 2 +- pkg/envd/types.go | 2 +- pkg/flag/consts.go | 2 +- pkg/home/auth.go | 2 +- pkg/home/auth_test.go | 5 +++-- pkg/home/cache.go | 2 +- pkg/home/config.go | 2 +- pkg/home/context.go | 2 +- pkg/home/context_test.go | 2 +- pkg/home/data.go | 2 +- pkg/home/home_suite_test.go | 2 +- pkg/home/manager.go | 2 +- pkg/home/manager_test.go | 2 +- pkg/lang/frontend/starlark/interpreter.go | 2 +- pkg/lang/frontend/starlark/v0/builtin/builtin.go | 2 +- pkg/lang/frontend/starlark/v0/config/config.go | 2 +- pkg/lang/frontend/starlark/v0/config/const.go | 2 +- pkg/lang/frontend/starlark/v0/data/const.go | 2 +- pkg/lang/frontend/starlark/v0/data/rule.go | 2 +- pkg/lang/frontend/starlark/v0/data/util.go | 2 +- pkg/lang/frontend/starlark/v0/install/const.go | 2 +- pkg/lang/frontend/starlark/v0/install/install.go | 2 +- pkg/lang/frontend/starlark/v0/interpreter.go | 2 +- .../frontend/starlark/v0/interpreter_test.go | 2 +- pkg/lang/frontend/starlark/v0/io/const.go | 2 +- pkg/lang/frontend/starlark/v0/io/io.go | 2 +- pkg/lang/frontend/starlark/v0/runtime/const.go | 2 +- pkg/lang/frontend/starlark/v0/runtime/runtime.go | 2 +- .../frontend/starlark/v0/starlark_suite_test.go | 2 +- pkg/lang/frontend/starlark/v0/universe/const.go | 2 +- .../frontend/starlark/v0/universe/universe.go | 2 +- pkg/lang/frontend/starlark/v1/builtin/builtin.go | 2 +- pkg/lang/frontend/starlark/v1/config/config.go | 2 +- pkg/lang/frontend/starlark/v1/config/const.go | 2 +- pkg/lang/frontend/starlark/v1/data/const.go | 2 +- pkg/lang/frontend/starlark/v1/data/rule.go | 2 +- pkg/lang/frontend/starlark/v1/data/util.go | 2 +- pkg/lang/frontend/starlark/v1/install/const.go | 2 +- pkg/lang/frontend/starlark/v1/install/install.go | 2 +- pkg/lang/frontend/starlark/v1/interpreter.go | 2 +- .../frontend/starlark/v1/interpreter_test.go | 2 +- pkg/lang/frontend/starlark/v1/io/const.go | 2 +- pkg/lang/frontend/starlark/v1/io/io.go | 2 +- pkg/lang/frontend/starlark/v1/runtime/const.go | 2 +- pkg/lang/frontend/starlark/v1/runtime/runtime.go | 2 +- .../frontend/starlark/v1/starlark_suite_test.go | 2 +- pkg/lang/frontend/starlark/v1/universe/const.go | 2 +- .../frontend/starlark/v1/universe/universe.go | 2 +- pkg/lang/ir/graph.go | 2 +- pkg/lang/ir/types.go | 2 +- pkg/lang/ir/util.go | 2 +- pkg/lang/ir/v0/cache.go | 2 +- pkg/lang/ir/v0/checker.go | 2 +- pkg/lang/ir/v0/compile.go | 2 +- pkg/lang/ir/v0/conda.go | 2 +- pkg/lang/ir/v0/consts.go | 2 +- pkg/lang/ir/v0/custom.go | 2 +- pkg/lang/ir/v0/editor.go | 2 +- pkg/lang/ir/v0/editor_test.go | 2 +- pkg/lang/ir/v0/fs.go | 2 +- pkg/lang/ir/v0/git.go | 2 +- pkg/lang/ir/v0/interface.go | 2 +- pkg/lang/ir/v0/julia.go | 2 +- pkg/lang/ir/v0/python.go | 2 +- pkg/lang/ir/v0/r.go | 2 +- pkg/lang/ir/v0/shell.go | 2 +- pkg/lang/ir/v0/supervisor.go | 2 +- pkg/lang/ir/v0/system.go | 2 +- pkg/lang/ir/v0/types.go | 2 +- pkg/lang/ir/v0/user.go | 2 +- pkg/lang/ir/v0/util.go | 2 +- pkg/lang/ir/v0/util_test.go | 2 +- pkg/lang/ir/v1/cache.go | 2 +- pkg/lang/ir/v1/checker.go | 2 +- pkg/lang/ir/v1/compile.go | 2 +- pkg/lang/ir/v1/conda.go | 2 +- pkg/lang/ir/v1/consts.go | 2 +- pkg/lang/ir/v1/editor.go | 2 +- pkg/lang/ir/v1/editor_test.go | 2 +- pkg/lang/ir/v1/fs.go | 2 +- pkg/lang/ir/v1/git.go | 2 +- pkg/lang/ir/v1/interface.go | 2 +- pkg/lang/ir/v1/julia.go | 2 +- pkg/lang/ir/v1/python.go | 2 +- pkg/lang/ir/v1/r.go | 2 +- pkg/lang/ir/v1/shell.go | 2 +- pkg/lang/ir/v1/supervisor.go | 2 +- pkg/lang/ir/v1/system.go | 2 +- pkg/lang/ir/v1/types.go | 2 +- pkg/lang/ir/v1/user.go | 2 +- pkg/lang/ir/v1/util.go | 2 +- pkg/lang/ir/v1/util_test.go | 2 +- pkg/lang/version/version.go | 2 +- pkg/metrics/collector.go | 2 +- pkg/metrics/docker_collector.go | 2 +- pkg/metrics/helper.go | 2 +- pkg/metrics/model.go | 2 +- pkg/metrics/widget.go | 2 +- pkg/progress/compileui/display.go | 2 +- pkg/progress/compileui/term.go | 4 ++-- pkg/progress/compileui/term_windows.go | 4 ++-- pkg/progress/compileui/trace.go | 2 +- pkg/progress/compileui/types.go | 2 +- pkg/progress/progressui/display.go | 4 ++-- pkg/progress/progressui/display_test.go | 4 ++-- pkg/progress/progressui/printer.go | 4 ++-- pkg/progress/progressui/term.go | 4 ++-- pkg/progress/progressui/term_windows.go | 4 ++-- pkg/progress/progresswriter/printer.go | 4 ++-- pkg/progress/progresswriter/writer.go | 4 ++-- pkg/remote/sshd/os.go | 4 ++-- pkg/remote/sshd/sshd.go | 4 ++-- pkg/shell/zsh.go | 2 +- pkg/shell/zsh_suite_test.go | 2 +- pkg/shell/zsh_test.go | 2 +- pkg/ssh/config/entry.go | 2 +- pkg/ssh/config/key.go | 7 ++++--- pkg/ssh/config/ssh_config.go | 4 ++-- pkg/ssh/config/ssh_config_suite_test.go | 2 +- pkg/ssh/config/ssh_config_test.go | 2 +- pkg/ssh/copy.go | 7 ++++--- pkg/ssh/ssh.go | 6 +++--- pkg/types/envd.go | 2 +- pkg/types/label.go | 2 +- pkg/types/types_suite_test.go | 2 +- pkg/util/fileutil/file_test.go | 2 +- pkg/util/fileutil/namegenerator.go | 4 ++-- pkg/util/netutil/netutil.go | 2 +- pkg/util/netutil/netutil_test.go | 2 +- pkg/util/osutil/wsl.go | 4 ++-- pkg/util/starlarkutil/stringslice.go | 2 +- pkg/util/starlarkutil/stringslice_test.go | 2 +- pkg/util/ziputil/unzip.go | 4 ++-- 242 files changed, 323 insertions(+), 291 deletions(-) diff --git a/cmd/envd-sshd/main.go b/cmd/envd-sshd/main.go index 86508af3b..40314848b 100644 --- a/cmd/envd-sshd/main.go +++ b/cmd/envd-sshd/main.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The okteto remote Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The okteto remote Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/cmd/envd/main.go b/cmd/envd/main.go index 309e7d520..6915194fa 100644 --- a/cmd/envd/main.go +++ b/cmd/envd/main.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v0/cli/build_test.go b/e2e/v0/cli/build_test.go index 0bb926405..25c8070ad 100644 --- a/e2e/v0/cli/build_test.go +++ b/e2e/v0/cli/build_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" diff --git a/e2e/v0/cli/bytecode_hash_test.go b/e2e/v0/cli/bytecode_hash_test.go index 4e09c5084..7487f300e 100644 --- a/e2e/v0/cli/bytecode_hash_test.go +++ b/e2e/v0/cli/bytecode_hash_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" ) func appendSomeToFile(path string) { diff --git a/e2e/v0/cli/context_test.go b/e2e/v0/cli/context_test.go index 93f2256d2..39234c8ee 100644 --- a/e2e/v0/cli/context_test.go +++ b/e2e/v0/cli/context_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/types" diff --git a/e2e/v0/cli/get_env_test.go b/e2e/v0/cli/get_env_test.go index 7b2e9194b..946724413 100644 --- a/e2e/v0/cli/get_env_test.go +++ b/e2e/v0/cli/get_env_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" ) diff --git a/e2e/v0/cli/init_test.go b/e2e/v0/cli/init_test.go index 0a3772055..e9ab8b528 100644 --- a/e2e/v0/cli/init_test.go +++ b/e2e/v0/cli/init_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/util/fileutil" diff --git a/e2e/v0/cli/quick_start_test.go b/e2e/v0/cli/quick_start_test.go index 2e8048af9..f3dddf796 100644 --- a/e2e/v0/cli/quick_start_test.go +++ b/e2e/v0/cli/quick_start_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" ) var _ = Describe("e2e quickstart", Ordered, func() { diff --git a/e2e/v0/cli/suite_test.go b/e2e/v0/cli/suite_test.go index d1c6671da..396f13ed5 100644 --- a/e2e/v0/cli/suite_test.go +++ b/e2e/v0/cli/suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v0/cli/up_test.go b/e2e/v0/cli/up_test.go index 93280e42f..f4c436194 100644 --- a/e2e/v0/cli/up_test.go +++ b/e2e/v0/cli/up_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" diff --git a/e2e/v0/docs/docs_gpu_test.go b/e2e/v0/docs/docs_gpu_test.go index 654b5bfc0..f9afde377 100644 --- a/e2e/v0/docs/docs_gpu_test.go +++ b/e2e/v0/docs/docs_gpu_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package docs import ( . "github.com/onsi/ginkgo/v2" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" ) var _ = Describe("check GPU examples in documentation", Ordered, func() { diff --git a/e2e/v0/docs/docs_test.go b/e2e/v0/docs/docs_test.go index 5adadf4e6..a87c3d266 100644 --- a/e2e/v0/docs/docs_test.go +++ b/e2e/v0/docs/docs_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" ) diff --git a/e2e/v0/docs/suite_test.go b/e2e/v0/docs/suite_test.go index 000291872..7a73ecfd5 100644 --- a/e2e/v0/docs/suite_test.go +++ b/e2e/v0/docs/suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v0/e2e_helper.go b/e2e/v0/e2e_helper.go index 47add9241..d8395bcf3 100644 --- a/e2e/v0/e2e_helper.go +++ b/e2e/v0/e2e_helper.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v0/language/python_test.go b/e2e/v0/language/python_test.go index e1eca5249..169bc7db4 100644 --- a/e2e/v0/language/python_test.go +++ b/e2e/v0/language/python_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package language import ( . "github.com/onsi/ginkgo/v2" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" ) var _ = Describe("python", Ordered, func() { diff --git a/e2e/v0/language/runtime_test.go b/e2e/v0/language/runtime_test.go index d42c4b33c..c2170c5ca 100644 --- a/e2e/v0/language/runtime_test.go +++ b/e2e/v0/language/runtime_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e/v0" ) var _ = Describe("runtime", Ordered, func() { diff --git a/e2e/v0/language/suite_test.go b/e2e/v0/language/suite_test.go index 2d815693b..5fdc07a3b 100644 --- a/e2e/v0/language/suite_test.go +++ b/e2e/v0/language/suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v1/cli/build_test.go b/e2e/v1/cli/build_test.go index 5044165f2..8f0d450b6 100644 --- a/e2e/v1/cli/build_test.go +++ b/e2e/v1/cli/build_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" diff --git a/e2e/v1/cli/bytecode_hash_test.go b/e2e/v1/cli/bytecode_hash_test.go index 527211d92..9b9082fa1 100644 --- a/e2e/v1/cli/bytecode_hash_test.go +++ b/e2e/v1/cli/bytecode_hash_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) func appendSomeToFile(path string) { diff --git a/e2e/v1/cli/context_test.go b/e2e/v1/cli/context_test.go index 2663b3d3c..078ebb9ef 100644 --- a/e2e/v1/cli/context_test.go +++ b/e2e/v1/cli/context_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/types" diff --git a/e2e/v1/cli/get_env_test.go b/e2e/v1/cli/get_env_test.go index 368cda257..36034ece0 100644 --- a/e2e/v1/cli/get_env_test.go +++ b/e2e/v1/cli/get_env_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" ) diff --git a/e2e/v1/cli/init_test.go b/e2e/v1/cli/init_test.go index 0a3772055..e9ab8b528 100644 --- a/e2e/v1/cli/init_test.go +++ b/e2e/v1/cli/init_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,7 +21,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/util/fileutil" diff --git a/e2e/v1/cli/quick_start_test.go b/e2e/v1/cli/quick_start_test.go index 4a91fe92a..3879b80f4 100644 --- a/e2e/v1/cli/quick_start_test.go +++ b/e2e/v1/cli/quick_start_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("e2e quickstart", Ordered, func() { diff --git a/e2e/v1/cli/suite_test.go b/e2e/v1/cli/suite_test.go index d1c6671da..396f13ed5 100644 --- a/e2e/v1/cli/suite_test.go +++ b/e2e/v1/cli/suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v1/cli/up_test.go b/e2e/v1/cli/up_test.go index 70a358100..6bafa7e9d 100644 --- a/e2e/v1/cli/up_test.go +++ b/e2e/v1/cli/up_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" diff --git a/e2e/v1/docs/docs_gpu_test.go b/e2e/v1/docs/docs_gpu_test.go index ce56d1369..c9426ccd1 100644 --- a/e2e/v1/docs/docs_gpu_test.go +++ b/e2e/v1/docs/docs_gpu_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package docs import ( . "github.com/onsi/ginkgo/v2" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("check GPU examples in documentation", Ordered, func() { diff --git a/e2e/v1/docs/docs_test.go b/e2e/v1/docs/docs_test.go index 7defbd6f8..7b02ee28e 100644 --- a/e2e/v1/docs/docs_test.go +++ b/e2e/v1/docs/docs_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" ) diff --git a/e2e/v1/docs/extra_lang_test.go b/e2e/v1/docs/extra_lang_test.go index dba356cc4..18d03ff9e 100644 --- a/e2e/v1/docs/extra_lang_test.go +++ b/e2e/v1/docs/extra_lang_test.go @@ -4,7 +4,7 @@ // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, @@ -17,7 +17,7 @@ package docs import ( . "github.com/onsi/ginkgo/v2" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("lang", Ordered, func() { diff --git a/e2e/v1/docs/julia_mnist_test.go b/e2e/v1/docs/julia_mnist_test.go index f48292981..297c99f17 100644 --- a/e2e/v1/docs/julia_mnist_test.go +++ b/e2e/v1/docs/julia_mnist_test.go @@ -1,3 +1,17 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package docs import ( @@ -6,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("julia_mnist", Ordered, func() { diff --git a/e2e/v1/docs/rlang_mnist_test.go b/e2e/v1/docs/rlang_mnist_test.go index cb39f6042..0737e124d 100644 --- a/e2e/v1/docs/rlang_mnist_test.go +++ b/e2e/v1/docs/rlang_mnist_test.go @@ -1,10 +1,24 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package docs import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("rlang_mnist", Ordered, func() { diff --git a/e2e/v1/docs/suite_test.go b/e2e/v1/docs/suite_test.go index fcc7a1e83..aec839fdf 100644 --- a/e2e/v1/docs/suite_test.go +++ b/e2e/v1/docs/suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v1/e2e_helper.go b/e2e/v1/e2e_helper.go index 09e521d00..462d52549 100644 --- a/e2e/v1/e2e_helper.go +++ b/e2e/v1/e2e_helper.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/e2e/v1/language/python_test.go b/e2e/v1/language/python_test.go index 27e7b9e8d..b8871c87e 100644 --- a/e2e/v1/language/python_test.go +++ b/e2e/v1/language/python_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ package language import ( . "github.com/onsi/ginkgo/v2" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("python", Ordered, func() { diff --git a/e2e/v1/language/runtime_test.go b/e2e/v1/language/runtime_test.go index c736e0a43..0cf672e4a 100644 --- a/e2e/v1/language/runtime_test.go +++ b/e2e/v1/language/runtime_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - e2e "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e/v1" ) var _ = Describe("runtime", Ordered, func() { diff --git a/e2e/v1/language/suite_test.go b/e2e/v1/language/suite_test.go index 2d815693b..5fdc07a3b 100644 --- a/e2e/v1/language/suite_test.go +++ b/e2e/v1/language/suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/app.go b/pkg/app/app.go index 7ff19ae87..49374cc77 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index d733c10e6..7840a6f52 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/build.go b/pkg/app/build.go index d7d8cf0cc..8457d0426 100644 --- a/pkg/app/build.go +++ b/pkg/app/build.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/build/build.go b/pkg/app/build/build.go index c7749f1e7..8c5d8337f 100644 --- a/pkg/app/build/build.go +++ b/pkg/app/build/build.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/completion.go b/pkg/app/completion.go index b5310a567..f890ed9bc 100644 --- a/pkg/app/completion.go +++ b/pkg/app/completion.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/const.go b/pkg/app/const.go index 613448034..c230b7647 100644 --- a/pkg/app/const.go +++ b/pkg/app/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/context.go b/pkg/app/context.go index 87fa3feb2..5d2bba7d4 100644 --- a/pkg/app/context.go +++ b/pkg/app/context.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/context_create.go b/pkg/app/context_create.go index bbcf6ef9e..816a356f2 100644 --- a/pkg/app/context_create.go +++ b/pkg/app/context_create.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/context_ls.go b/pkg/app/context_ls.go index df1bb70eb..49d85767e 100644 --- a/pkg/app/context_ls.go +++ b/pkg/app/context_ls.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/context_rm.go b/pkg/app/context_rm.go index 5b749c686..6985a5b1d 100644 --- a/pkg/app/context_rm.go +++ b/pkg/app/context_rm.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/context_use.go b/pkg/app/context_use.go index 941e09750..ba9975520 100644 --- a/pkg/app/context_use.go +++ b/pkg/app/context_use.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/debug.go b/pkg/app/debug.go index 7db0cefb0..a0f4c27d3 100644 --- a/pkg/app/debug.go +++ b/pkg/app/debug.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/debug_llb.go b/pkg/app/debug_llb.go index d5f823001..e10412f34 100644 --- a/pkg/app/debug_llb.go +++ b/pkg/app/debug_llb.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/destroy.go b/pkg/app/destroy.go index bb8cca5b6..67b7debfc 100644 --- a/pkg/app/destroy.go +++ b/pkg/app/destroy.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/env.go b/pkg/app/env.go index 7fd68500d..41d17382d 100644 --- a/pkg/app/env.go +++ b/pkg/app/env.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/env_describe.go b/pkg/app/env_describe.go index 9b3f500f6..ca113bd5e 100644 --- a/pkg/app/env_describe.go +++ b/pkg/app/env_describe.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/env_ls.go b/pkg/app/env_ls.go index 76d80f382..547678e9e 100644 --- a/pkg/app/env_ls.go +++ b/pkg/app/env_ls.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/exec.go b/pkg/app/exec.go index 67b529cb8..f11b0abe2 100644 --- a/pkg/app/exec.go +++ b/pkg/app/exec.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/data.go b/pkg/app/formatter/data.go index b68c4afcd..a77a87a25 100644 --- a/pkg/app/formatter/data.go +++ b/pkg/app/formatter/data.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/json/context.go b/pkg/app/formatter/json/context.go index 3866d6d08..ecb7a610b 100644 --- a/pkg/app/formatter/json/context.go +++ b/pkg/app/formatter/json/context.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/json/env.go b/pkg/app/formatter/json/env.go index 267b5575f..de9fbe2a4 100644 --- a/pkg/app/formatter/json/env.go +++ b/pkg/app/formatter/json/env.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/json/image.go b/pkg/app/formatter/json/image.go index b46dbed87..ce6172949 100644 --- a/pkg/app/formatter/json/image.go +++ b/pkg/app/formatter/json/image.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/json/print.go b/pkg/app/formatter/json/print.go index 275b653fc..21b2f5a45 100644 --- a/pkg/app/formatter/json/print.go +++ b/pkg/app/formatter/json/print.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/json/version.go b/pkg/app/formatter/json/version.go index f53dac33a..d3bbd95cf 100644 --- a/pkg/app/formatter/json/version.go +++ b/pkg/app/formatter/json/version.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/table/context.go b/pkg/app/formatter/table/context.go index 46d4421b3..4da6a4c23 100644 --- a/pkg/app/formatter/table/context.go +++ b/pkg/app/formatter/table/context.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/table/env.go b/pkg/app/formatter/table/env.go index 30321f913..39fc9276f 100644 --- a/pkg/app/formatter/table/env.go +++ b/pkg/app/formatter/table/env.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/table/image.go b/pkg/app/formatter/table/image.go index ff15a2b2c..2ab0ca7dd 100644 --- a/pkg/app/formatter/table/image.go +++ b/pkg/app/formatter/table/image.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/formatter/table/version.go b/pkg/app/formatter/table/version.go index 32a7c4bad..80197a60f 100644 --- a/pkg/app/formatter/table/version.go +++ b/pkg/app/formatter/table/version.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/image.go b/pkg/app/image.go index e94a5e722..63aa51d2e 100644 --- a/pkg/app/image.go +++ b/pkg/app/image.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/image_describe.go b/pkg/app/image_describe.go index 558a0da22..b4fc0beb5 100644 --- a/pkg/app/image_describe.go +++ b/pkg/app/image_describe.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/image_prune.go b/pkg/app/image_prune.go index 382093db7..7f03ce161 100644 --- a/pkg/app/image_prune.go +++ b/pkg/app/image_prune.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/image_prune_test.go b/pkg/app/image_prune_test.go index 63c9d0b67..23873a2dd 100644 --- a/pkg/app/image_prune_test.go +++ b/pkg/app/image_prune_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/image_remove.go b/pkg/app/image_remove.go index cf9412579..6c72ab1f7 100644 --- a/pkg/app/image_remove.go +++ b/pkg/app/image_remove.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/init.go b/pkg/app/init.go index 574ecdaae..ab90b2e64 100644 --- a/pkg/app/init.go +++ b/pkg/app/init.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/interactive.go b/pkg/app/interactive.go index 53e0f7601..b782ad18d 100644 --- a/pkg/app/interactive.go +++ b/pkg/app/interactive.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/login.go b/pkg/app/login.go index d1d916345..4ac8c55dc 100644 --- a/pkg/app/login.go +++ b/pkg/app/login.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/pause.go b/pkg/app/pause.go index 50c91f825..c2c640991 100644 --- a/pkg/app/pause.go +++ b/pkg/app/pause.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/prune.go b/pkg/app/prune.go index aedce9bde..47eef81af 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/resume.go b/pkg/app/resume.go index 3f819a4c4..96c811e4f 100644 --- a/pkg/app/resume.go +++ b/pkg/app/resume.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/run.go b/pkg/app/run.go index 30bc5ad60..baa2fe1e8 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/telemetry/reporter.go b/pkg/app/telemetry/reporter.go index daa0ee4c7..4b037f03d 100644 --- a/pkg/app/telemetry/reporter.go +++ b/pkg/app/telemetry/reporter.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/top.go b/pkg/app/top.go index 78ff9f382..3768e18fb 100644 --- a/pkg/app/top.go +++ b/pkg/app/top.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/up.go b/pkg/app/up.go index 64eb2c0f2..f7ac8ca0e 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/app/version.go b/pkg/app/version.go index ad5c0ee1a..253eecd39 100644 --- a/pkg/app/version.go +++ b/pkg/app/version.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/autocomplete/bash.go b/pkg/autocomplete/bash.go index be95c87a1..a913e094b 100644 --- a/pkg/autocomplete/bash.go +++ b/pkg/autocomplete/bash.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/autocomplete/zsh.go b/pkg/autocomplete/zsh.go index d4b3686cb..757cb7d7d 100644 --- a/pkg/autocomplete/zsh.go +++ b/pkg/autocomplete/zsh.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 894f4d16c..63441fa5a 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/build_func.go b/pkg/builder/build_func.go index 40d620c1b..21b13fd9a 100644 --- a/pkg/builder/build_func.go +++ b/pkg/builder/build_func.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/builder.go b/pkg/builder/builder.go index bf0053e3e..01a29d492 100644 --- a/pkg/builder/builder.go +++ b/pkg/builder/builder.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/builder_suite_test.go b/pkg/builder/builder_suite_test.go index 15a711df9..87a04c0bf 100644 --- a/pkg/builder/builder_suite_test.go +++ b/pkg/builder/builder_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/builder_test.go b/pkg/builder/builder_test.go index db596cac6..13587ff75 100644 --- a/pkg/builder/builder_test.go +++ b/pkg/builder/builder_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/dep_check.go b/pkg/builder/dep_check.go index 9dbbbc2ba..490532f61 100644 --- a/pkg/builder/dep_check.go +++ b/pkg/builder/dep_check.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/err.go b/pkg/builder/err.go index 1a052dd2c..1b4056bd7 100644 --- a/pkg/builder/err.go +++ b/pkg/builder/err.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/types.go b/pkg/builder/types.go index 52cb87f8f..ba6c899de 100644 --- a/pkg/builder/types.go +++ b/pkg/builder/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/util.go b/pkg/builder/util.go index 670c132e1..367c9cfd0 100644 --- a/pkg/builder/util.go +++ b/pkg/builder/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/builder/util_test.go b/pkg/builder/util_test.go index 77a045c06..fe99ffb97 100644 --- a/pkg/builder/util_test.go +++ b/pkg/builder/util_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index aa2255b3f..d6a69fd57 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/buildkitd/print.go b/pkg/buildkitd/print.go index ef03c2355..6f75d4aff 100644 --- a/pkg/buildkitd/print.go +++ b/pkg/buildkitd/print.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/config/config.go b/pkg/config/config.go index cb8a55995..646dfb768 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -1,9 +1,10 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/pkg/data/datasource.go b/pkg/data/datasource.go index 92e7f05dc..84c89cc65 100644 --- a/pkg/data/datasource.go +++ b/pkg/data/datasource.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/data/envd.go b/pkg/data/envd.go index 7883a2432..82eee31a7 100644 --- a/pkg/data/envd.go +++ b/pkg/data/envd.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index c1f37dfb7..ecb9d2801 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/driver/docker/docker_suite_test.go b/pkg/driver/docker/docker_suite_test.go index 00e29aa1c..0dfc156dd 100644 --- a/pkg/driver/docker/docker_suite_test.go +++ b/pkg/driver/docker/docker_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/driver/docker/docker_test.go b/pkg/driver/docker/docker_test.go index 2fc26f690..975a41fad 100644 --- a/pkg/driver/docker/docker_test.go +++ b/pkg/driver/docker/docker_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/driver/docker/label.go b/pkg/driver/docker/label.go index 9c2fce120..4ea193e1a 100644 --- a/pkg/driver/docker/label.go +++ b/pkg/driver/docker/label.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index ce9303eaf..2dbac0a19 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -173,7 +173,7 @@ func (nc *nerdctlClient) containerExists(ctx context.Context, tag string) (bool, func (nc *nerdctlClient) containerInspect(ctx context.Context, tag string) (*types.ContainerJSON, error) { out, err := nc.exec(ctx, nil, "inspect", tag) if err != nil { - //TODO(kweizh): check not found + // TODO(kweizh): check not found return nil, err } @@ -211,7 +211,7 @@ func (nc *nerdctlClient) imageInspect(ctx context.Context, tag string) error { cmd.Stdout = &out err := cmd.Run() if err != nil { - //TODO(kweizh): check not found + // TODO(kweizh): check not found return err } diff --git a/pkg/editor/vscode/types.go b/pkg/editor/vscode/types.go index 75452f621..8bf921e47 100644 --- a/pkg/editor/vscode/types.go +++ b/pkg/editor/vscode/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/editor/vscode/util.go b/pkg/editor/vscode/util.go index 4cf28fd1a..e88139b3e 100644 --- a/pkg/editor/vscode/util.go +++ b/pkg/editor/vscode/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/editor/vscode/vscode.go b/pkg/editor/vscode/vscode.go index b77392c12..e0243c8b3 100644 --- a/pkg/editor/vscode/vscode.go +++ b/pkg/editor/vscode/vscode.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/editor/vscode/vscode_suite_test.go b/pkg/editor/vscode/vscode_suite_test.go index 2dfd67109..6a8c96bd7 100644 --- a/pkg/editor/vscode/vscode_suite_test.go +++ b/pkg/editor/vscode/vscode_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/editor/vscode/vscode_test.go b/pkg/editor/vscode/vscode_test.go index c0d0280f8..8f3d3eb8d 100644 --- a/pkg/editor/vscode/vscode_test.go +++ b/pkg/editor/vscode/vscode_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 3bfa61404..a955c8015 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/envd/engine.go b/pkg/envd/engine.go index 6d02e13e6..d7aee0dd4 100644 --- a/pkg/envd/engine.go +++ b/pkg/envd/engine.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/envd/envdserver.go b/pkg/envd/envdserver.go index b17854d9e..c24f2328d 100644 --- a/pkg/envd/envdserver.go +++ b/pkg/envd/envdserver.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/envd/factory.go b/pkg/envd/factory.go index c709d231b..6f893f982 100644 --- a/pkg/envd/factory.go +++ b/pkg/envd/factory.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/envd/types.go b/pkg/envd/types.go index f0fbe7664..6766977a6 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/flag/consts.go b/pkg/flag/consts.go index be26979fd..df9951004 100644 --- a/pkg/flag/consts.go +++ b/pkg/flag/consts.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/auth.go b/pkg/home/auth.go index 2dc1c5631..abf8cad67 100644 --- a/pkg/home/auth.go +++ b/pkg/home/auth.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/auth_test.go b/pkg/home/auth_test.go index 9bff6ad87..73afefce2 100644 --- a/pkg/home/auth_test.go +++ b/pkg/home/auth_test.go @@ -1,16 +1,17 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. + package home import ( diff --git a/pkg/home/cache.go b/pkg/home/cache.go index 9b8ca4093..a3d53f83c 100644 --- a/pkg/home/cache.go +++ b/pkg/home/cache.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/config.go b/pkg/home/config.go index 89201a536..22dfcd218 100644 --- a/pkg/home/config.go +++ b/pkg/home/config.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/context.go b/pkg/home/context.go index b3dcf16d0..4b4039649 100644 --- a/pkg/home/context.go +++ b/pkg/home/context.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/context_test.go b/pkg/home/context_test.go index 9b6354965..d8da279e3 100644 --- a/pkg/home/context_test.go +++ b/pkg/home/context_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/data.go b/pkg/home/data.go index 9859465d3..d8c51a66a 100644 --- a/pkg/home/data.go +++ b/pkg/home/data.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/home_suite_test.go b/pkg/home/home_suite_test.go index 373061f87..525f50adb 100644 --- a/pkg/home/home_suite_test.go +++ b/pkg/home/home_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/manager.go b/pkg/home/manager.go index 518c8ac42..944371038 100644 --- a/pkg/home/manager.go +++ b/pkg/home/manager.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/home/manager_test.go b/pkg/home/manager_test.go index 895776fda..2263d6337 100644 --- a/pkg/home/manager_test.go +++ b/pkg/home/manager_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/interpreter.go b/pkg/lang/frontend/starlark/interpreter.go index 2265bdc20..eedc5547c 100644 --- a/pkg/lang/frontend/starlark/interpreter.go +++ b/pkg/lang/frontend/starlark/interpreter.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/builtin/builtin.go b/pkg/lang/frontend/starlark/v0/builtin/builtin.go index 148ba725c..1b46b99cb 100644 --- a/pkg/lang/frontend/starlark/v0/builtin/builtin.go +++ b/pkg/lang/frontend/starlark/v0/builtin/builtin.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/config/config.go b/pkg/lang/frontend/starlark/v0/config/config.go index adc275c96..1fb4223cb 100644 --- a/pkg/lang/frontend/starlark/v0/config/config.go +++ b/pkg/lang/frontend/starlark/v0/config/config.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/config/const.go b/pkg/lang/frontend/starlark/v0/config/const.go index 3e084f794..4b5f7f78b 100644 --- a/pkg/lang/frontend/starlark/v0/config/const.go +++ b/pkg/lang/frontend/starlark/v0/config/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/data/const.go b/pkg/lang/frontend/starlark/v0/data/const.go index 9af123827..6b6e6441d 100644 --- a/pkg/lang/frontend/starlark/v0/data/const.go +++ b/pkg/lang/frontend/starlark/v0/data/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/data/rule.go b/pkg/lang/frontend/starlark/v0/data/rule.go index 44c804b29..cd69b61bf 100644 --- a/pkg/lang/frontend/starlark/v0/data/rule.go +++ b/pkg/lang/frontend/starlark/v0/data/rule.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/data/util.go b/pkg/lang/frontend/starlark/v0/data/util.go index 8f8692c73..89d84f812 100644 --- a/pkg/lang/frontend/starlark/v0/data/util.go +++ b/pkg/lang/frontend/starlark/v0/data/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/install/const.go b/pkg/lang/frontend/starlark/v0/install/const.go index 3f39a8ff8..d8485da17 100644 --- a/pkg/lang/frontend/starlark/v0/install/const.go +++ b/pkg/lang/frontend/starlark/v0/install/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/install/install.go b/pkg/lang/frontend/starlark/v0/install/install.go index feea5f48a..6e888d86a 100644 --- a/pkg/lang/frontend/starlark/v0/install/install.go +++ b/pkg/lang/frontend/starlark/v0/install/install.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/interpreter.go b/pkg/lang/frontend/starlark/v0/interpreter.go index fe95b4154..fdbacb1b7 100644 --- a/pkg/lang/frontend/starlark/v0/interpreter.go +++ b/pkg/lang/frontend/starlark/v0/interpreter.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/interpreter_test.go b/pkg/lang/frontend/starlark/v0/interpreter_test.go index edcd71af8..99fa4f8ee 100644 --- a/pkg/lang/frontend/starlark/v0/interpreter_test.go +++ b/pkg/lang/frontend/starlark/v0/interpreter_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/io/const.go b/pkg/lang/frontend/starlark/v0/io/const.go index d46769e9e..391ff50fe 100644 --- a/pkg/lang/frontend/starlark/v0/io/const.go +++ b/pkg/lang/frontend/starlark/v0/io/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/io/io.go b/pkg/lang/frontend/starlark/v0/io/io.go index 0367a1a23..3d985de7e 100644 --- a/pkg/lang/frontend/starlark/v0/io/io.go +++ b/pkg/lang/frontend/starlark/v0/io/io.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/runtime/const.go b/pkg/lang/frontend/starlark/v0/runtime/const.go index 584e4c069..5143851c7 100644 --- a/pkg/lang/frontend/starlark/v0/runtime/const.go +++ b/pkg/lang/frontend/starlark/v0/runtime/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/runtime/runtime.go b/pkg/lang/frontend/starlark/v0/runtime/runtime.go index b3b26b4ee..b060b9188 100644 --- a/pkg/lang/frontend/starlark/v0/runtime/runtime.go +++ b/pkg/lang/frontend/starlark/v0/runtime/runtime.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/starlark_suite_test.go b/pkg/lang/frontend/starlark/v0/starlark_suite_test.go index 75e46eea6..1bc312703 100644 --- a/pkg/lang/frontend/starlark/v0/starlark_suite_test.go +++ b/pkg/lang/frontend/starlark/v0/starlark_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/universe/const.go b/pkg/lang/frontend/starlark/v0/universe/const.go index 7e2b74e68..4528bce4f 100644 --- a/pkg/lang/frontend/starlark/v0/universe/const.go +++ b/pkg/lang/frontend/starlark/v0/universe/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v0/universe/universe.go b/pkg/lang/frontend/starlark/v0/universe/universe.go index 2b990327b..106ba7c94 100644 --- a/pkg/lang/frontend/starlark/v0/universe/universe.go +++ b/pkg/lang/frontend/starlark/v0/universe/universe.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/builtin/builtin.go b/pkg/lang/frontend/starlark/v1/builtin/builtin.go index 148ba725c..1b46b99cb 100644 --- a/pkg/lang/frontend/starlark/v1/builtin/builtin.go +++ b/pkg/lang/frontend/starlark/v1/builtin/builtin.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/config/config.go b/pkg/lang/frontend/starlark/v1/config/config.go index a2ac698f0..378177103 100644 --- a/pkg/lang/frontend/starlark/v1/config/config.go +++ b/pkg/lang/frontend/starlark/v1/config/config.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/config/const.go b/pkg/lang/frontend/starlark/v1/config/const.go index d7a93e064..3aea8914b 100644 --- a/pkg/lang/frontend/starlark/v1/config/const.go +++ b/pkg/lang/frontend/starlark/v1/config/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/data/const.go b/pkg/lang/frontend/starlark/v1/data/const.go index 9af123827..6b6e6441d 100644 --- a/pkg/lang/frontend/starlark/v1/data/const.go +++ b/pkg/lang/frontend/starlark/v1/data/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/data/rule.go b/pkg/lang/frontend/starlark/v1/data/rule.go index 44c804b29..cd69b61bf 100644 --- a/pkg/lang/frontend/starlark/v1/data/rule.go +++ b/pkg/lang/frontend/starlark/v1/data/rule.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/data/util.go b/pkg/lang/frontend/starlark/v1/data/util.go index 8f8692c73..89d84f812 100644 --- a/pkg/lang/frontend/starlark/v1/data/util.go +++ b/pkg/lang/frontend/starlark/v1/data/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/install/const.go b/pkg/lang/frontend/starlark/v1/install/const.go index 2f79810f1..937d8fe49 100644 --- a/pkg/lang/frontend/starlark/v1/install/const.go +++ b/pkg/lang/frontend/starlark/v1/install/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/install/install.go b/pkg/lang/frontend/starlark/v1/install/install.go index badd6a7ad..3f0b46b25 100644 --- a/pkg/lang/frontend/starlark/v1/install/install.go +++ b/pkg/lang/frontend/starlark/v1/install/install.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/interpreter.go b/pkg/lang/frontend/starlark/v1/interpreter.go index 09c63ec74..0a42ed3fd 100644 --- a/pkg/lang/frontend/starlark/v1/interpreter.go +++ b/pkg/lang/frontend/starlark/v1/interpreter.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/interpreter_test.go b/pkg/lang/frontend/starlark/v1/interpreter_test.go index 08a921b87..32122a7f5 100644 --- a/pkg/lang/frontend/starlark/v1/interpreter_test.go +++ b/pkg/lang/frontend/starlark/v1/interpreter_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/io/const.go b/pkg/lang/frontend/starlark/v1/io/const.go index d46769e9e..391ff50fe 100644 --- a/pkg/lang/frontend/starlark/v1/io/const.go +++ b/pkg/lang/frontend/starlark/v1/io/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/io/io.go b/pkg/lang/frontend/starlark/v1/io/io.go index 71cb9e1df..2c1b7ac58 100644 --- a/pkg/lang/frontend/starlark/v1/io/io.go +++ b/pkg/lang/frontend/starlark/v1/io/io.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/runtime/const.go b/pkg/lang/frontend/starlark/v1/runtime/const.go index 584e4c069..5143851c7 100644 --- a/pkg/lang/frontend/starlark/v1/runtime/const.go +++ b/pkg/lang/frontend/starlark/v1/runtime/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/runtime/runtime.go b/pkg/lang/frontend/starlark/v1/runtime/runtime.go index 29f220857..449d6cfd4 100644 --- a/pkg/lang/frontend/starlark/v1/runtime/runtime.go +++ b/pkg/lang/frontend/starlark/v1/runtime/runtime.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/starlark_suite_test.go b/pkg/lang/frontend/starlark/v1/starlark_suite_test.go index 3fbdd42a5..fc370760b 100644 --- a/pkg/lang/frontend/starlark/v1/starlark_suite_test.go +++ b/pkg/lang/frontend/starlark/v1/starlark_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/universe/const.go b/pkg/lang/frontend/starlark/v1/universe/const.go index 7e2b74e68..4528bce4f 100644 --- a/pkg/lang/frontend/starlark/v1/universe/const.go +++ b/pkg/lang/frontend/starlark/v1/universe/const.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/frontend/starlark/v1/universe/universe.go b/pkg/lang/frontend/starlark/v1/universe/universe.go index a03eb079e..09cc63155 100644 --- a/pkg/lang/frontend/starlark/v1/universe/universe.go +++ b/pkg/lang/frontend/starlark/v1/universe/universe.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 41f3c64db..a19084818 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/types.go b/pkg/lang/ir/types.go index 02bcbda5e..a92597cf8 100644 --- a/pkg/lang/ir/types.go +++ b/pkg/lang/ir/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/util.go b/pkg/lang/ir/util.go index 391c63682..99aecf99f 100644 --- a/pkg/lang/ir/util.go +++ b/pkg/lang/ir/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/cache.go b/pkg/lang/ir/v0/cache.go index 4354183f5..8c7ca9bea 100644 --- a/pkg/lang/ir/v0/cache.go +++ b/pkg/lang/ir/v0/cache.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/checker.go b/pkg/lang/ir/v0/checker.go index ba1d7bbe5..89d9a12d9 100644 --- a/pkg/lang/ir/v0/checker.go +++ b/pkg/lang/ir/v0/checker.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index 882ab0655..6c2dc93c8 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/conda.go b/pkg/lang/ir/v0/conda.go index cabe7e194..b4188f2ec 100644 --- a/pkg/lang/ir/v0/conda.go +++ b/pkg/lang/ir/v0/conda.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/consts.go b/pkg/lang/ir/v0/consts.go index 6e11f21ca..172fe25a5 100644 --- a/pkg/lang/ir/v0/consts.go +++ b/pkg/lang/ir/v0/consts.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/custom.go b/pkg/lang/ir/v0/custom.go index 7daa40847..77889e055 100644 --- a/pkg/lang/ir/v0/custom.go +++ b/pkg/lang/ir/v0/custom.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/editor.go b/pkg/lang/ir/v0/editor.go index 63c86df8e..69deed236 100644 --- a/pkg/lang/ir/v0/editor.go +++ b/pkg/lang/ir/v0/editor.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/editor_test.go b/pkg/lang/ir/v0/editor_test.go index ca5d62e50..5a75b39a3 100644 --- a/pkg/lang/ir/v0/editor_test.go +++ b/pkg/lang/ir/v0/editor_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/fs.go b/pkg/lang/ir/v0/fs.go index f0e4766f6..5788f0bb9 100644 --- a/pkg/lang/ir/v0/fs.go +++ b/pkg/lang/ir/v0/fs.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/git.go b/pkg/lang/ir/v0/git.go index b2352213e..3f94610cc 100644 --- a/pkg/lang/ir/v0/git.go +++ b/pkg/lang/ir/v0/git.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/interface.go b/pkg/lang/ir/v0/interface.go index 6b3bf5d05..ee4b5d3cd 100644 --- a/pkg/lang/ir/v0/interface.go +++ b/pkg/lang/ir/v0/interface.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/julia.go b/pkg/lang/ir/v0/julia.go index 995d42ec7..71381e061 100644 --- a/pkg/lang/ir/v0/julia.go +++ b/pkg/lang/ir/v0/julia.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/python.go b/pkg/lang/ir/v0/python.go index ba31de137..2c6e0a075 100644 --- a/pkg/lang/ir/v0/python.go +++ b/pkg/lang/ir/v0/python.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/r.go b/pkg/lang/ir/v0/r.go index d290ec34a..d8da7560a 100644 --- a/pkg/lang/ir/v0/r.go +++ b/pkg/lang/ir/v0/r.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/shell.go b/pkg/lang/ir/v0/shell.go index 7f72dc620..93f90c72d 100644 --- a/pkg/lang/ir/v0/shell.go +++ b/pkg/lang/ir/v0/shell.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/supervisor.go b/pkg/lang/ir/v0/supervisor.go index 7b3a0f038..8910ff415 100644 --- a/pkg/lang/ir/v0/supervisor.go +++ b/pkg/lang/ir/v0/supervisor.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 2ed2f274c..35312481a 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go index 80a7b79a0..51edcc188 100644 --- a/pkg/lang/ir/v0/types.go +++ b/pkg/lang/ir/v0/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/user.go b/pkg/lang/ir/v0/user.go index 689202739..fca651161 100644 --- a/pkg/lang/ir/v0/user.go +++ b/pkg/lang/ir/v0/user.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/util.go b/pkg/lang/ir/v0/util.go index 266f3028b..ab4f57833 100644 --- a/pkg/lang/ir/v0/util.go +++ b/pkg/lang/ir/v0/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v0/util_test.go b/pkg/lang/ir/v0/util_test.go index 255e0ea24..df6741ca7 100644 --- a/pkg/lang/ir/v0/util_test.go +++ b/pkg/lang/ir/v0/util_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/cache.go b/pkg/lang/ir/v1/cache.go index 1364a6193..5268c1c87 100644 --- a/pkg/lang/ir/v1/cache.go +++ b/pkg/lang/ir/v1/cache.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/checker.go b/pkg/lang/ir/v1/checker.go index f152ec579..a4583ce81 100644 --- a/pkg/lang/ir/v1/checker.go +++ b/pkg/lang/ir/v1/checker.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 5b12f6666..0219f0281 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index 5954df665..3966002de 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/consts.go b/pkg/lang/ir/v1/consts.go index c7769e30b..2920a8244 100644 --- a/pkg/lang/ir/v1/consts.go +++ b/pkg/lang/ir/v1/consts.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index 391e86188..02ed8732b 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/editor_test.go b/pkg/lang/ir/v1/editor_test.go index dfb41cdc1..935664a5c 100644 --- a/pkg/lang/ir/v1/editor_test.go +++ b/pkg/lang/ir/v1/editor_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/fs.go b/pkg/lang/ir/v1/fs.go index 2a16ddf92..72043ea39 100644 --- a/pkg/lang/ir/v1/fs.go +++ b/pkg/lang/ir/v1/fs.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/git.go b/pkg/lang/ir/v1/git.go index 8e456efb0..25acd31a2 100644 --- a/pkg/lang/ir/v1/git.go +++ b/pkg/lang/ir/v1/git.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index 50a6c97a4..d69bf9ddb 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/julia.go b/pkg/lang/ir/v1/julia.go index 7a614980a..6510acee6 100644 --- a/pkg/lang/ir/v1/julia.go +++ b/pkg/lang/ir/v1/julia.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 38a70fbeb..4722537df 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/r.go b/pkg/lang/ir/v1/r.go index 5fa4e8f70..c09a82c28 100644 --- a/pkg/lang/ir/v1/r.go +++ b/pkg/lang/ir/v1/r.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index 24fffe872..6ff99c50d 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/supervisor.go b/pkg/lang/ir/v1/supervisor.go index 2a54d864e..1557584fc 100644 --- a/pkg/lang/ir/v1/supervisor.go +++ b/pkg/lang/ir/v1/supervisor.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 3f1f90ef0..c9ad8e60f 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index eb22d639b..1c34077a7 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/user.go b/pkg/lang/ir/v1/user.go index 7b7f50f21..0090b1d58 100644 --- a/pkg/lang/ir/v1/user.go +++ b/pkg/lang/ir/v1/user.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/util.go b/pkg/lang/ir/v1/util.go index f78be2829..83d21dfc7 100644 --- a/pkg/lang/ir/v1/util.go +++ b/pkg/lang/ir/v1/util.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/ir/v1/util_test.go b/pkg/lang/ir/v1/util_test.go index ee1bb8b3f..2234ea27f 100644 --- a/pkg/lang/ir/v1/util_test.go +++ b/pkg/lang/ir/v1/util_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/lang/version/version.go b/pkg/lang/version/version.go index a9af195e2..97417ca0e 100644 --- a/pkg/lang/version/version.go +++ b/pkg/lang/version/version.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/metrics/collector.go b/pkg/metrics/collector.go index 7391ce9da..5c8a746cb 100644 --- a/pkg/metrics/collector.go +++ b/pkg/metrics/collector.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/metrics/docker_collector.go b/pkg/metrics/docker_collector.go index 4a158bbef..09492a54c 100644 --- a/pkg/metrics/docker_collector.go +++ b/pkg/metrics/docker_collector.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/metrics/helper.go b/pkg/metrics/helper.go index 80515756c..598f01dfe 100644 --- a/pkg/metrics/helper.go +++ b/pkg/metrics/helper.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/metrics/model.go b/pkg/metrics/model.go index 07b8c7487..c69d75531 100644 --- a/pkg/metrics/model.go +++ b/pkg/metrics/model.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/metrics/widget.go b/pkg/metrics/widget.go index f273f2b9c..c8d11de76 100644 --- a/pkg/metrics/widget.go +++ b/pkg/metrics/widget.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/compileui/display.go b/pkg/progress/compileui/display.go index 026bd4f02..990bb6e9d 100644 --- a/pkg/progress/compileui/display.go +++ b/pkg/progress/compileui/display.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/compileui/term.go b/pkg/progress/compileui/term.go index 75a7a8dd0..7c56ec11a 100644 --- a/pkg/progress/compileui/term.go +++ b/pkg/progress/compileui/term.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/compileui/term_windows.go b/pkg/progress/compileui/term_windows.go index de9da9f9b..ffa7bc281 100644 --- a/pkg/progress/compileui/term_windows.go +++ b/pkg/progress/compileui/term_windows.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/compileui/trace.go b/pkg/progress/compileui/trace.go index 6962b8b05..ce450ad39 100644 --- a/pkg/progress/compileui/trace.go +++ b/pkg/progress/compileui/trace.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/compileui/types.go b/pkg/progress/compileui/types.go index 9056bcf47..7d563f42a 100644 --- a/pkg/progress/compileui/types.go +++ b/pkg/progress/compileui/types.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progressui/display.go b/pkg/progress/progressui/display.go index d2e3cdad7..51b4249e1 100644 --- a/pkg/progress/progressui/display.go +++ b/pkg/progress/progressui/display.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progressui/display_test.go b/pkg/progress/progressui/display_test.go index 2cee2c6fe..3b72bab9c 100644 --- a/pkg/progress/progressui/display_test.go +++ b/pkg/progress/progressui/display_test.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progressui/printer.go b/pkg/progress/progressui/printer.go index 56669942a..c2fb92b2b 100644 --- a/pkg/progress/progressui/printer.go +++ b/pkg/progress/progressui/printer.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progressui/term.go b/pkg/progress/progressui/term.go index 80a3c87c0..d71562b44 100644 --- a/pkg/progress/progressui/term.go +++ b/pkg/progress/progressui/term.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progressui/term_windows.go b/pkg/progress/progressui/term_windows.go index a18d5a78c..d2a1bfa4f 100644 --- a/pkg/progress/progressui/term_windows.go +++ b/pkg/progress/progressui/term_windows.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progresswriter/printer.go b/pkg/progress/progresswriter/printer.go index 8018867b2..e60e1ab21 100644 --- a/pkg/progress/progresswriter/printer.go +++ b/pkg/progress/progresswriter/printer.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/progress/progresswriter/writer.go b/pkg/progress/progresswriter/writer.go index 5f0628912..b09155079 100644 --- a/pkg/progress/progresswriter/writer.go +++ b/pkg/progress/progresswriter/writer.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The buildkit Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The buildkit Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/remote/sshd/os.go b/pkg/remote/sshd/os.go index 898148ec2..6ae3d9fa7 100644 --- a/pkg/remote/sshd/os.go +++ b/pkg/remote/sshd/os.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The okteto remote Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The okteto remote Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/remote/sshd/sshd.go b/pkg/remote/sshd/sshd.go index 113cd0677..9aae40d8e 100644 --- a/pkg/remote/sshd/sshd.go +++ b/pkg/remote/sshd/sshd.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The okteto remote Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The okteto remote Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/shell/zsh.go b/pkg/shell/zsh.go index 055543dfd..b62b0afbf 100644 --- a/pkg/shell/zsh.go +++ b/pkg/shell/zsh.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/shell/zsh_suite_test.go b/pkg/shell/zsh_suite_test.go index 05d074126..e70d313da 100644 --- a/pkg/shell/zsh_suite_test.go +++ b/pkg/shell/zsh_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/shell/zsh_test.go b/pkg/shell/zsh_test.go index 7f1b297d1..da1ba5ec3 100644 --- a/pkg/shell/zsh_test.go +++ b/pkg/shell/zsh_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/ssh/config/entry.go b/pkg/ssh/config/entry.go index 43b02b122..45a619ea5 100644 --- a/pkg/ssh/config/entry.go +++ b/pkg/ssh/config/entry.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/ssh/config/key.go b/pkg/ssh/config/key.go index 8151096c8..63b29e24c 100644 --- a/pkg/ssh/config/key.go +++ b/pkg/ssh/config/key.go @@ -1,10 +1,11 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The Okteto Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The Okteto Authors +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/pkg/ssh/config/ssh_config.go b/pkg/ssh/config/ssh_config.go index e39c9e390..ba1cf0b2b 100644 --- a/pkg/ssh/config/ssh_config.go +++ b/pkg/ssh/config/ssh_config.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The Okteto Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The Okteto Authors // based on https://github.com/havoc-io/sshconfig // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/pkg/ssh/config/ssh_config_suite_test.go b/pkg/ssh/config/ssh_config_suite_test.go index 6095729c6..7abc3d8cd 100644 --- a/pkg/ssh/config/ssh_config_suite_test.go +++ b/pkg/ssh/config/ssh_config_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/ssh/config/ssh_config_test.go b/pkg/ssh/config/ssh_config_test.go index 88c0b78eb..9a7051f6e 100644 --- a/pkg/ssh/config/ssh_config_test.go +++ b/pkg/ssh/config/ssh_config_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/ssh/copy.go b/pkg/ssh/copy.go index b5a3b43b8..e4f6cd9c8 100644 --- a/pkg/ssh/copy.go +++ b/pkg/ssh/copy.go @@ -1,10 +1,11 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The Okteto Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The Okteto Authors +// // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, diff --git a/pkg/ssh/ssh.go b/pkg/ssh/ssh.go index 0722551f5..071c2382a 100644 --- a/pkg/ssh/ssh.go +++ b/pkg/ssh/ssh.go @@ -1,6 +1,6 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The okteto Authors -// Copyright 2022 stefanprodan +// Copyright 2023 The envd Authors +// Copyright 2023 The okteto Authors +// Copyright 2023 stefanprodan // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/types/envd.go b/pkg/types/envd.go index 32b988e64..560b396f6 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/types/label.go b/pkg/types/label.go index c0fd64a29..67f4fc92e 100644 --- a/pkg/types/label.go +++ b/pkg/types/label.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/types/types_suite_test.go b/pkg/types/types_suite_test.go index 9fab48bca..9bf376f6a 100644 --- a/pkg/types/types_suite_test.go +++ b/pkg/types/types_suite_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/fileutil/file_test.go b/pkg/util/fileutil/file_test.go index 72ab5415a..853f47404 100644 --- a/pkg/util/fileutil/file_test.go +++ b/pkg/util/fileutil/file_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/fileutil/namegenerator.go b/pkg/util/fileutil/namegenerator.go index be97321af..5b8865770 100644 --- a/pkg/util/fileutil/namegenerator.go +++ b/pkg/util/fileutil/namegenerator.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 The moby Authors +// Copyright 2023 The envd Authors +// Copyright 2023 The moby Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/netutil/netutil.go b/pkg/util/netutil/netutil.go index 67f12bbac..b8cc92d89 100644 --- a/pkg/util/netutil/netutil.go +++ b/pkg/util/netutil/netutil.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/netutil/netutil_test.go b/pkg/util/netutil/netutil_test.go index 5a30a2c39..f575ffe0e 100644 --- a/pkg/util/netutil/netutil_test.go +++ b/pkg/util/netutil/netutil_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/osutil/wsl.go b/pkg/util/osutil/wsl.go index bd6e83d34..e029a4a2f 100644 --- a/pkg/util/osutil/wsl.go +++ b/pkg/util/osutil/wsl.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 mateors +// Copyright 2023 The envd Authors +// Copyright 2023 mateors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/starlarkutil/stringslice.go b/pkg/util/starlarkutil/stringslice.go index 5ea83cd57..a4d81bcfc 100644 --- a/pkg/util/starlarkutil/stringslice.go +++ b/pkg/util/starlarkutil/stringslice.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/starlarkutil/stringslice_test.go b/pkg/util/starlarkutil/stringslice_test.go index 6451dabc6..03a71b7c8 100644 --- a/pkg/util/starlarkutil/stringslice_test.go +++ b/pkg/util/starlarkutil/stringslice_test.go @@ -1,4 +1,4 @@ -// Copyright 2022 The envd Authors +// Copyright 2023 The envd Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/pkg/util/ziputil/unzip.go b/pkg/util/ziputil/unzip.go index 459730ffa..25bd4a7f5 100644 --- a/pkg/util/ziputil/unzip.go +++ b/pkg/util/ziputil/unzip.go @@ -1,5 +1,5 @@ -// Copyright 2022 The envd Authors -// Copyright 2022 mateors +// Copyright 2023 The envd Authors +// Copyright 2023 mateors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From 0a55acd03c6daae2f1de640e4bc751115a8f3564 Mon Sep 17 00:00:00 2001 From: Kevin Su <pingsutw@apache.org> Date: Thu, 4 May 2023 18:05:27 -0700 Subject: [PATCH 106/355] Use default python in the base image (#1589) * use default python in the base image Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> * lint fix Signed-off-by: Kevin Su <pingsutw@apache.org> * nit Signed-off-by: Kevin Su <pingsutw@apache.org> --------- Signed-off-by: Kevin Su <pingsutw@apache.org> --- pkg/lang/ir/v1/system.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index c9ad8e60f..2ea2c748b 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -256,16 +256,17 @@ func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { packs := []llb.State{} - pack := root + + // Use default python in the base image if install.python() is not specified. + index := g.compilePyPIIndex(root) + pack := g.compilePyPIPackages(index) + if g.CondaConfig != nil { + channel := g.compileCondaChannel(pack) + pack = g.compileCondaPackages(channel) + } + for _, language := range g.Languages { switch language.Name { - case "python": - index := g.compilePyPIIndex(root) - pack = g.compilePyPIPackages(index) - if g.CondaConfig != nil { - channel := g.compileCondaChannel(pack) - pack = g.compileCondaPackages(channel) - } case "r": pack = g.installRPackages(root) case "julia": From aaaa93137b40893215f24fe6795064deea95cc23 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 6 May 2023 08:03:24 +0800 Subject: [PATCH 107/355] docs: updated CHANGELOG.md (#1591) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 639169609..699fc193b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## v0.3.21 (2023-05-05) + + * [0a55acd](https://github.com/tensorchord/envd/commit/0a55acd03c6daae2f1de640e4bc751115a8f3564) Use default python in the base image (#1589) + +### Contributors + + * Kevin Su + ## v0.3.20 (2023-05-02) * [6e055c6](https://github.com/tensorchord/envd/commit/6e055c61fdc1cdba6959c8a54ead5aad6654090e) feat: inherit entrypoint from the base image (#1587) From 8ab73d8a7faa9b9fa4a0f882ae904683e2867868 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 8 May 2023 09:54:15 +0800 Subject: [PATCH 108/355] fix(v1): rm bash absolute path (#1594) fix: rm bash path prefix Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/shell.go | 2 +- pkg/lang/ir/v1/system.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index 6ff99c50d..d1b129f1c 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -56,7 +56,7 @@ deleted = "x" ) func (g *generalGraph) compileShell(root llb.State) (_ llb.State, err error) { - g.RuntimeEnviron["SHELL"] = "/usr/bin/bash" + g.RuntimeEnviron["SHELL"] = "bash" if g.Shell == shellZSH { g.RuntimeEnviron["SHELL"] = "/usr/bin/zsh" root, err = g.compileZSH(root) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 2ea2c748b..480c587ab 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -150,7 +150,7 @@ func (g generalGraph) compileRun(root llb.State) llb.State { sb.WriteString(c + "\n") } - cmdStr := fmt.Sprintf("/usr/bin/bash -c '%s'", sb.String()) + cmdStr := fmt.Sprintf("bash -c '%s'", sb.String()) logrus.WithField("command", cmdStr).Debug("compile run command") // Mount the build context into the build process. // TODO(gaocegege): Maybe we should make it readonly, From d4df02a4e15e73aff64dfd38cc68ffc2058892f3 Mon Sep 17 00:00:00 2001 From: rrain7 <13019718290@163.com> Date: Mon, 8 May 2023 09:59:05 +0800 Subject: [PATCH 109/355] fix: In debug model, there is progress display. (#1595) * fix: in debug model, there is progress display re #1253 Signed-off-by: hui <13019718290@163.com> * fix: in debug model, there is progress display re #1253 Signed-off-by: hui <13019718290@163.com> --------- Signed-off-by: hui <13019718290@163.com> --- pkg/app/build/build.go | 5 +++-- pkg/builder/build.go | 2 +- pkg/builder/builder_test.go | 3 ++- pkg/lang/ir/graph.go | 2 +- pkg/lang/ir/v0/compile.go | 4 ++-- pkg/lang/ir/v1/compile.go | 4 ++-- pkg/progress/compileui/display.go | 7 ++++--- pkg/progress/mode/mode.go | 22 ++++++++++++++++++++++ pkg/progress/progresswriter/printer.go | 9 +++++---- 9 files changed, 42 insertions(+), 16 deletions(-) create mode 100644 pkg/progress/mode/mode.go diff --git a/pkg/app/build/build.go b/pkg/app/build/build.go index 8c5d8337f..a9d3c206a 100644 --- a/pkg/app/build/build.go +++ b/pkg/app/build/build.go @@ -28,6 +28,7 @@ import ( "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" "github.com/tensorchord/envd/pkg/home" + progressmode "github.com/tensorchord/envd/pkg/progress/mode" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -143,7 +144,7 @@ func ParseBuildOpt(clicontext *cli.Context) (builder.Options, error) { Tag: tag, OutputOpts: output, PubKeyPath: clicontext.Path("public-key"), - ProgressMode: "auto", + ProgressMode: progressmode.AUTO, ExportCache: exportCache, ImportCache: importCache, UseHTTPProxy: useProxy, @@ -151,7 +152,7 @@ func ParseBuildOpt(clicontext *cli.Context) (builder.Options, error) { debug := clicontext.Bool("debug") if debug { - opt.ProgressMode = "plain" + opt.ProgressMode = progressmode.PLAIN } return opt, nil } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 63441fa5a..c9db810c1 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -157,7 +157,7 @@ func (b generalBuilder) Interpret() error { func (b generalBuilder) Compile(ctx context.Context) (*llb.Definition, error) { envName := filepath.Base(b.BuildContextDir) - def, err := b.graph.Compile(ctx, envName, b.PubKeyPath) + def, err := b.graph.Compile(ctx, envName, b.PubKeyPath, b.Options.ProgressMode) if err != nil { return nil, errors.Wrap(err, "failed to compile build.envd") } diff --git a/pkg/builder/builder_test.go b/pkg/builder/builder_test.go index 13587ff75..40dc1f707 100644 --- a/pkg/builder/builder_test.go +++ b/pkg/builder/builder_test.go @@ -31,6 +31,7 @@ import ( v0 "github.com/tensorchord/envd/pkg/lang/ir/v0" "github.com/tensorchord/envd/pkg/progress/compileui" compileuimock "github.com/tensorchord/envd/pkg/progress/compileui/mock" + progressmode "github.com/tensorchord/envd/pkg/progress/mode" "github.com/tensorchord/envd/pkg/progress/progresswriter" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" ) @@ -56,7 +57,7 @@ var _ = Describe("Builder", func() { Options: Options{ ManifestFilePath: manifestFilePath, ConfigFilePath: configFilePath, - ProgressMode: "plain", + ProgressMode: progressmode.PLAIN, Tag: tag, BuildFuncName: "build", PubKeyPath: pub, diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index a19084818..6600eebd7 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -23,7 +23,7 @@ import ( ) type Graph interface { - Compile(ctx context.Context, envName string, pub string) (*llb.Definition, error) + Compile(ctx context.Context, envName string, pub string, progressMode string) (*llb.Definition, error) graphDebugger graphVisitor diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index 6c2dc93c8..fd0359301 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -106,8 +106,8 @@ func (g generalGraph) GetUser() string { return "envd" } -func (g *generalGraph) Compile(ctx context.Context, envName string, pub string) (*llb.Definition, error) { - w, err := compileui.New(ctx, os.Stdout, "auto") +func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, progressMode string) (*llb.Definition, error) { + w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { return nil, errors.Wrap(err, "failed to create compileui") } diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 0219f0281..e3c5264eb 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -102,8 +102,8 @@ func (g generalGraph) GetRuntimeCommands() map[string]string { return g.RuntimeCommands } -func (g *generalGraph) Compile(ctx context.Context, envName string, pub string) (*llb.Definition, error) { - w, err := compileui.New(ctx, os.Stdout, "auto") +func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, progressMode string) (*llb.Definition, error) { + w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { return nil, errors.Wrap(err, "failed to create compileui") } diff --git a/pkg/progress/compileui/display.go b/pkg/progress/compileui/display.go index 990bb6e9d..66dbe31f5 100644 --- a/pkg/progress/compileui/display.go +++ b/pkg/progress/compileui/display.go @@ -26,6 +26,7 @@ import ( "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/editor/vscode" + progressmode "github.com/tensorchord/envd/pkg/progress/mode" ) type Writer interface { @@ -48,15 +49,15 @@ type generalWriter struct { func New(ctx context.Context, out console.File, mode string) (Writer, error) { var c console.Console switch mode { - case "auto", "tty", "": + case progressmode.AUTO, progressmode.TTY, progressmode.NONE: if cons, err := console.ConsoleFromFile(out); err == nil { c = cons } else { - if mode == "tty" { + if mode == progressmode.TTY { return nil, errors.Wrap(err, "failed to get console") } } - case "plain": + case progressmode.PLAIN: default: return nil, errors.Errorf("invalid progress mode %s", mode) } diff --git a/pkg/progress/mode/mode.go b/pkg/progress/mode/mode.go new file mode 100644 index 000000000..aa0cbb0f3 --- /dev/null +++ b/pkg/progress/mode/mode.go @@ -0,0 +1,22 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package progressmode + +const ( + AUTO = "auto" + TTY = "tty" + PLAIN = "plain" + NONE = "" +) diff --git a/pkg/progress/progresswriter/printer.go b/pkg/progress/progresswriter/printer.go index e60e1ab21..c4165dfaf 100644 --- a/pkg/progress/progresswriter/printer.go +++ b/pkg/progress/progresswriter/printer.go @@ -23,6 +23,7 @@ import ( "github.com/containerd/console" "github.com/moby/buildkit/client" + progressmode "github.com/tensorchord/envd/pkg/progress/mode" "github.com/tensorchord/envd/pkg/progress/progressui" ) @@ -82,21 +83,21 @@ func NewPrinter(ctx context.Context, out console.File, mode string) (Writer, err done: doneCh, } - if v := os.Getenv("BUILDKIT_PROGRESS"); v != "" && mode == "auto" { + if v := os.Getenv("BUILDKIT_PROGRESS"); v != "" && mode == progressmode.AUTO { mode = v } var c console.Console switch mode { - case "auto", "tty", "": + case progressmode.AUTO, progressmode.TTY, progressmode.NONE: if cons, err := console.ConsoleFromFile(out); err == nil { c = cons } else { - if mode == "tty" { + if mode == progressmode.TTY { return nil, errors.Wrap(err, "failed to get console") } } - case "plain": + case progressmode.PLAIN: default: return nil, errors.Errorf("invalid progress mode %s", mode) } From 4f731b9a6ebfa2fb105c34dadd88f053c9e8cbb6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 11:00:41 +0800 Subject: [PATCH 110/355] chore(deps): bump crate-ci/typos from 1.14.8 to 1.14.9 (#1596) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.8 to 1.14.9. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.8...v1.14.9) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index f02621fe7..915e16534 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.8 + uses: crate-ci/typos@v1.14.9 with: config: ./typos.toml lint: From e5972b27eb700af06b739f17d0fcbbaa659f0798 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 11:58:24 +0800 Subject: [PATCH 111/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#1597) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.9.2 to 2.9.4. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.9.2...v2.9.4) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 8e2d209cf..c4e6d63bb 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/moby/term v0.0.0-20221120202655-abb19827d345 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.9.2 + github.com/onsi/ginkgo/v2 v2.9.4 github.com/onsi/gomega v1.27.6 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2 @@ -83,7 +83,7 @@ require ( github.com/getsentry/sentry-go v0.12.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect - github.com/go-logr/logr v1.2.3 // indirect + github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect @@ -181,12 +181,12 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect - golang.org/x/mod v0.9.0 // indirect + golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.9.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect golang.org/x/sys v0.7.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/tools v0.8.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.110.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index 47ed09462..b691d3ba9 100644 --- a/go.sum +++ b/go.sum @@ -399,8 +399,8 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= @@ -744,8 +744,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.9.2 h1:BA2GMJOtfGAfagzYtrAlufIP0lq6QERkFmHLMLPwFSU= -github.com/onsi/ginkgo/v2 v2.9.2/go.mod h1:WHcJJG2dIlcCqVfBAwUCrJxSPFb6v4azBwgxeMeDuts= +github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= +github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -1031,8 +1031,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1334,8 +1334,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= -golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From d109a280ff9c67f64cf8275dd712ae2c471c6994 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 11:59:44 +0800 Subject: [PATCH 112/355] chore(deps): bump github.com/moby/term from 0.0.0-20221120202655-abb19827d345 to 0.5.0 (#1601) chore(deps): bump github.com/moby/term Bumps [github.com/moby/term](https://github.com/moby/term) from 0.0.0-20221120202655-abb19827d345 to 0.5.0. - [Commits](https://github.com/moby/term/commits/v0.5.0) --- updated-dependencies: - dependency-name: github.com/moby/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index c4e6d63bb..a2f0792fb 100644 --- a/go.mod +++ b/go.mod @@ -24,7 +24,7 @@ require ( github.com/hashicorp/go-getter v1.7.1 github.com/mattn/go-isatty v0.0.18 github.com/moby/buildkit v0.11.4 - github.com/moby/term v0.0.0-20221120202655-abb19827d345 + github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.9.4 diff --git a/go.sum b/go.sum index b691d3ba9..7c478a37b 100644 --- a/go.sum +++ b/go.sum @@ -701,8 +701,8 @@ github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGp github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= -github.com/moby/term v0.0.0-20221120202655-abb19827d345 h1:J9c53/kxIH+2nTKBEfZYFMlhghtHpIHSXpm5VRGHSnU= -github.com/moby/term v0.0.0-20221120202655-abb19827d345/go.mod h1:15ce4BGCFxt7I5NQKT+HV0yEDxmf6fSysfEDiVo3zFM= +github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= +github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= From 0700488320abbaf4a142a93c2f497bf2915d6da7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 12:00:03 +0800 Subject: [PATCH 113/355] chore(deps): bump golang.org/x/term from 0.7.0 to 0.8.0 (#1599) Bumps [golang.org/x/term](https://github.com/golang/term) from 0.7.0 to 0.8.0. - [Commits](https://github.com/golang/term/compare/v0.7.0...v0.8.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index a2f0792fb..120a7dfa0 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.8.0 golang.org/x/sync v0.1.0 - golang.org/x/term v0.7.0 + golang.org/x/term v0.8.0 golang.org/x/time v0.3.0 ) @@ -184,7 +184,7 @@ require ( golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.9.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect - golang.org/x/sys v0.7.0 // indirect + golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect golang.org/x/tools v0.8.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index 7c478a37b..569999d72 100644 --- a/go.sum +++ b/go.sum @@ -1245,16 +1245,16 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.7.0 h1:BEvjmm5fURWqcfbSKTdpkDXYBrUS1c0m8agp14W48vQ= -golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From e9c1cb9efe743a241c8c7436402e866c76d73d53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 12:01:30 +0800 Subject: [PATCH 114/355] chore(deps): bump github.com/docker/cli from 24.0.0-beta.2+incompatible to 24.0.0-rc.2+incompatible (#1598) chore(deps): bump github.com/docker/cli Bumps [github.com/docker/cli](https://github.com/docker/cli) from 24.0.0-beta.2+incompatible to 24.0.0-rc.2+incompatible. - [Commits](https://github.com/docker/cli/compare/v24.0.0-beta.2...v24.0.0-rc.2) --- updated-dependencies: - dependency-name: github.com/docker/cli dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 120a7dfa0..d7de28af8 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/containerd/containerd v1.6.19 github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v24.0.0-beta.2+incompatible + github.com/docker/cli v24.0.0-rc.2+incompatible github.com/docker/docker v23.0.2+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 diff --git a/go.sum b/go.sum index 569999d72..641d4a6a9 100644 --- a/go.sum +++ b/go.sum @@ -328,8 +328,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/cli v24.0.0-beta.2+incompatible h1:Kx1C/JV6v/j70nw1uBCC7GqjV/wTZjrOtkn/L3zMCC0= -github.com/docker/cli v24.0.0-beta.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.0-rc.2+incompatible h1:GxSh1DotrAPojZgExY3UxBZwJ1GZQUBOfOGjlhjwFVE= +github.com/docker/cli v24.0.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From 4306ddf8b490b546f7292df5605a866c63110686 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 May 2023 12:03:30 +0800 Subject: [PATCH 115/355] chore(deps): bump github.com/urfave/cli/v2 from 2.25.2 to 2.25.3 (#1600) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.2 to 2.25.3. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.2...v2.25.3) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d7de28af8..a624adce8 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.25.2 + github.com/urfave/cli/v2 v2.25.3 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.8.0 golang.org/x/sync v0.1.0 diff --git a/go.sum b/go.sum index 641d4a6a9..b59b438aa 100644 --- a/go.sum +++ b/go.sum @@ -914,8 +914,8 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= -github.com/urfave/cli/v2 v2.25.2 h1:rgeK7wmjwH+d3DqXDDSV20GZAvNzmzu/VEsg1om3Qwg= -github.com/urfave/cli/v2 v2.25.2/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= +github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 2fa41c7388af41e3ed8de2653d5402ad4bf52369 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 8 May 2023 11:53:24 +0800 Subject: [PATCH 116/355] fix: merge language packages to system packages (#1593) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/compile.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index e3c5264eb..b7d02f3ec 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -298,15 +298,15 @@ func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { aptMirror = userGroup } + systemPackages := g.compileSystemPackages(aptMirror) lang, err := g.compileLanguage(aptMirror) if err != nil { return llb.State{}, errors.Wrap(err, "failed to compile language") } - systemPackages := g.compileSystemPackages(aptMirror) merge := llb.Merge([]llb.State{ base, - llb.Diff(base, lang, llb.WithCustomName("[internal] prepare language")), llb.Diff(base, systemPackages, llb.WithCustomName("[internal] install system packages")), + llb.Diff(base, lang, llb.WithCustomName("[internal] prepare language")), }, llb.WithCustomName("[internal] language environment and system packages")) packages := g.compileLanguagePackages(merge) if err != nil { From fd45847e4ebec79bf644d291fa4d2420ea032373 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 10 May 2023 14:37:25 +0800 Subject: [PATCH 117/355] fix: bootstrap with key pair using the same path for pri/pub key (#1603) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/bootstrap.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 7840a6f52..4cfd39648 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -117,7 +117,7 @@ func sshKey(clicontext *cli.Context) error { return errors.Wrap(err, "Cannot get default key status") } - path, err := sshconfig.GetPrivateKey() + privatePath, err := sshconfig.GetPrivateKey() if err != nil { return errors.Wrap(err, "Cannot get private key path") } @@ -127,7 +127,7 @@ func sshKey(clicontext *cli.Context) error { var newPrivateKeyName string for ok := true; ok; ok = exists { - newPrivateKeyName = filepath.Join(filepath.Dir(path), + newPrivateKeyName = filepath.Join(filepath.Dir(privatePath), fmt.Sprintf("envd_%s.pk", namesgenerator.GetRandomName(0))) exists, err = fileutil.FileExists(newPrivateKeyName) if err != nil { @@ -136,7 +136,7 @@ func sshKey(clicontext *cli.Context) error { } logrus.Debugf("New key name: %s", newPrivateKeyName) if err := sshconfig.ReplaceKeyManagedByEnvd( - path, newPrivateKeyName); err != nil { + privatePath, newPrivateKeyName); err != nil { return err } } @@ -145,7 +145,11 @@ func sshKey(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "Cannot open public key") } - err = os.WriteFile(path, pubKey, 0644) + publicPath, err := sshconfig.GetPublicKey() + if err != nil { + return errors.Wrap(err, "Cannot get the public key path") + } + err = os.WriteFile(publicPath, pubKey, 0644) if err != nil { return errors.Wrap(err, "Cannot write public key") } @@ -155,7 +159,7 @@ func sshKey(clicontext *cli.Context) error { return errors.Wrap(err, "Cannot open private key") } - err = os.WriteFile(path, priKey, 0600) + err = os.WriteFile(privatePath, priKey, 0600) if err != nil { return errors.Wrap(err, "Cannot write private key") } From 2fbb4475c7da55dc4fc23e25dfb6f6c8666f63cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 May 2023 09:10:08 +0800 Subject: [PATCH 118/355] chore(deps): bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible (#1604) chore(deps): bump github.com/docker/distribution Bumps [github.com/docker/distribution](https://github.com/docker/distribution) from 2.8.1+incompatible to 2.8.2+incompatible. - [Release notes](https://github.com/docker/distribution/releases) - [Commits](https://github.com/docker/distribution/compare/v2.8.1...v2.8.2) --- updated-dependencies: - dependency-name: github.com/docker/distribution dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a624adce8..fa9c779d6 100644 --- a/go.mod +++ b/go.mod @@ -76,7 +76,7 @@ require ( github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/docker/distribution v2.8.1+incompatible // indirect + github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect diff --git a/go.sum b/go.sum index b59b438aa..bbcd71f60 100644 --- a/go.sum +++ b/go.sum @@ -330,8 +330,8 @@ github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6ps github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/cli v24.0.0-rc.2+incompatible h1:GxSh1DotrAPojZgExY3UxBZwJ1GZQUBOfOGjlhjwFVE= github.com/docker/cli v24.0.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68= -github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= +github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= From 2839aa33bf097b440064aad9a1aaba461647db50 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 12 May 2023 09:10:34 +0800 Subject: [PATCH 119/355] feat: support mirror ca for buildkitd (#1602) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/bootstrap.go | 69 ++++++++++++++++++++++++++++++++++- pkg/app/prune.go | 4 +- pkg/builder/build.go | 4 +- pkg/buildkitd/buildkitd.go | 37 ++++++++++--------- pkg/driver/client.go | 2 +- pkg/driver/docker/docker.go | 41 +++++++++++++++++---- pkg/driver/nerdctl/nerdctl.go | 5 ++- 7 files changed, 128 insertions(+), 34 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 4cfd39648..fd2125d2c 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -54,6 +54,11 @@ var CommandBootstrap = &cli.Command{ Usage: "Dockerhub mirror to use", Aliases: []string{"m"}, }, + &cli.StringFlag{ + Name: "registry-ca-keypair", + Usage: "Specify the ca/key/cert file path for the private registry (format: 'ca=/etc/config/ca.pem,key=/etc/config/key.pem,cert=/etc/config/cert.pem')", + Aliases: []string{"ca"}, + }, &cli.StringSliceFlag{ Name: "ssh-keypair", Usage: fmt.Sprintf("Manually specify ssh key pair as `publicKey,privateKey`. Envd will generate a keypair at %s and %s if not specified", @@ -72,6 +77,9 @@ func bootstrap(clicontext *cli.Context) error { }{{ "SSH Key", sshKey, + }, { + "registry CA keypair", + registryCA, }, { "autocomplete", autocomplete, @@ -92,6 +100,61 @@ func bootstrap(clicontext *cli.Context) error { return nil } +func registryCA(clicontext *cli.Context) error { + ca := clicontext.String("registry-ca-keypair") + if len(ca) == 0 { + return nil + } + mirror := clicontext.String("dockerhub-mirror") + if len(mirror) == 0 { + return errors.New("`registry-ca-keypair` should be used with `dockerhub-mirror`") + } + + // parse ca/key/cert + kvPairs := strings.Split(ca, ",") + if len(kvPairs) != 3 { + return errors.New("`registry-ca-keypair` requires ca/key/cert 3 part separated by ','") + } + names := []string{"ca", "cert", "key"} + for _, pair := range kvPairs { + kv := strings.SplitN(pair, "=", 2) + index := -1 + for i, name := range names { + if name == kv[0] { + index = i + break + } + } + if index == -1 { + return errors.Newf("parse error: `%s` is not a valid ca/key/cert key or it's duplicated") + } + exist, err := fileutil.FileExists(kv[1]) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("failed to parse file path %s", pair)) + } + if !exist { + return errors.Newf("file %s doesn't exist", kv[1]) + } + path, err := fileutil.ConfigFile(fmt.Sprintf("registry_%s.pem", kv[0])) + if err != nil { + return errors.Wrap(err, "failed to get the envd config file path") + } + content, err := os.ReadFile(kv[1]) + if err != nil { + return errors.Wrap(err, "failed to read the file") + } + if err = os.WriteFile(path, content, 0644); err != nil { + return errors.Wrap(err, "failed to store the CA file") + } + names = append(names[:index], names[index+1:]...) + } + + if len(names) != 0 { + return errors.Newf("registry %s are not provided", names) + } + return nil +} + func sshKey(clicontext *cli.Context) error { sshKeyPair := clicontext.StringSlice("ssh-keypair") @@ -218,13 +281,15 @@ func buildkit(clicontext *cli.Context) error { var bkClient buildkitd.Client if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror")) + c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror"), + clicontext.IsSet("registry-ca-keypair")) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror")) + c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror"), + clicontext.IsSet("registry-ca-keypair")) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/app/prune.go b/pkg/app/prune.go index 47eef81af..5427a1e0e 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -81,13 +81,13 @@ func prune(clicontext *cli.Context) error { var bkClient buildkitd.Client if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, "") + c.Builder, c.BuilderAddress, "", false) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, "") + c.Builder, c.BuilderAddress, "", false) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index c9db810c1..04f9d7d57 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -88,13 +88,13 @@ func New(ctx context.Context, opt Options) (Builder, error) { var cli buildkitd.Client if c.Builder == types.BuilderTypeMoby { cli, err = buildkitd.NewMobyClient(ctx, - c.Builder, c.BuilderAddress, "") + c.Builder, c.BuilderAddress, "", false) if err != nil { return nil, errors.Wrap(err, "failed to create moby buildkit client") } } else { cli, err = buildkitd.NewClient(ctx, - c.Builder, c.BuilderAddress, "") + c.Builder, c.BuilderAddress, "", false) if err != nil { return nil, errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index d6a69fd57..ae1cbe568 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -62,9 +62,10 @@ type Client interface { } type generalClient struct { - containerName string - image string - mirror string + containerName string + image string + mirror string + enableRegistryCA bool driver types.BuilderType socket string @@ -74,15 +75,16 @@ type generalClient struct { } func NewMobyClient(ctx context.Context, driver types.BuilderType, - socket, mirror string) (Client, error) { + socket, mirror string, enableRegistryCA bool) (Client, error) { logrus.Debug("getting moby buildkit client") c := &generalClient{ - containerName: socket, - image: viper.GetString(flag.FlagBuildkitdImage), - mirror: mirror, + containerName: socket, + image: viper.GetString(flag.FlagBuildkitdImage), + mirror: mirror, + enableRegistryCA: enableRegistryCA, + socket: socket, + driver: driver, } - c.socket = socket - c.driver = driver c.logger = logrus.WithFields(logrus.Fields{ "container": c.containerName, "image": c.image, @@ -109,14 +111,15 @@ func NewMobyClient(ctx context.Context, driver types.BuilderType, } func NewClient(ctx context.Context, driver types.BuilderType, - socket, mirror string) (Client, error) { + socket, mirror string, enableRegistryCA bool) (Client, error) { c := &generalClient{ - containerName: socket, - image: viper.GetString(flag.FlagBuildkitdImage), - mirror: mirror, + containerName: socket, + image: viper.GetString(flag.FlagBuildkitdImage), + mirror: mirror, + enableRegistryCA: enableRegistryCA, + socket: socket, + driver: driver, } - c.socket = socket - c.driver = driver c.logger = logrus.WithFields(logrus.Fields{ "container": c.containerName, "image": c.image, @@ -170,8 +173,8 @@ func (c *generalClient) maybeStart(ctx context.Context, } if client != nil { - if _, err := client.StartBuildkitd(ctx, - c.image, c.containerName, c.mirror, runningTimeout); err != nil { + if _, err := client.StartBuildkitd(ctx, c.image, c.containerName, c.mirror, + c.enableRegistryCA, runningTimeout); err != nil { return "", err } } diff --git a/pkg/driver/client.go b/pkg/driver/client.go index 4eabba577..1248d777c 100644 --- a/pkg/driver/client.go +++ b/pkg/driver/client.go @@ -25,7 +25,7 @@ import ( type Client interface { // Load loads the image from the reader to the docker host. Load(ctx context.Context, r io.ReadCloser, quiet bool) error - StartBuildkitd(ctx context.Context, tag, name, mirror string, timeout time.Duration) (string, error) + StartBuildkitd(ctx context.Context, tag, name, mirror string, enableRegistryCA bool, timeout time.Duration) (string, error) Exec(ctx context.Context, cname string, cmd []string) error diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index ecb9d2801..183275100 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -29,14 +29,30 @@ import ( "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" + "github.com/docker/docker/api/types/mount" "github.com/docker/docker/client" "github.com/docker/docker/pkg/jsonmessage" "github.com/moby/term" "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" + "github.com/tensorchord/envd/pkg/util/fileutil" ) +const buildkitdMirror = ` +[registry."docker.io"] + mirrors = ["%s"] +` +const buildkitdCertPath = "/etc/registry" +const buildkitdRegistry = ` +[registry."docker.io"] + mirrors = ["%s"] + ca=["/etc/registry/ca.pem"] + [[registry."docker.io".keypair]] + key="/etc/registry/key.pem" + cert="/etc/registry/cert.pem" +` + var ( anchoredIdentifierRegexp = regexp.MustCompile(`^([a-f0-9]{64})$`) waitingInterval = 1 * time.Second @@ -169,8 +185,8 @@ func (c dockerClient) ResumeContainer(ctx context.Context, name string) (string, return name, nil } -func (c dockerClient) StartBuildkitd(ctx context.Context, - tag, name, mirror string, timeout time.Duration) (string, error) { +func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror string, + enableRegistryCA bool, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, "container": name, @@ -198,10 +214,22 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, config := &container.Config{ Image: tag, } + hostConfig := &container.HostConfig{ + Privileged: true, + AutoRemove: true, + } if mirror != "" { - cfg := fmt.Sprintf(` -[registry."docker.io"] - mirrors = ["%s"]`, mirror) + var cfg string + if enableRegistryCA { + cfg = fmt.Sprintf(buildkitdRegistry, mirror) + hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ + Type: mount.TypeBind, + Source: fileutil.DefaultConfigDir, + Target: buildkitdCertPath, + }) + } else { + cfg = fmt.Sprintf(buildkitdMirror, mirror) + } config.Entrypoint = []string{ "/bin/sh", "-c", @@ -209,9 +237,6 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, } logger.Debugf("setting buildkit config: %s", cfg) } - hostConfig := &container.HostConfig{ - Privileged: true, - } created, _ := c.Exists(ctx, name) if created { err := c.ContainerStart(ctx, name, types.ContainerStartOptions{}) diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 2dbac0a19..7082351c2 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -63,8 +63,8 @@ func (nc *nerdctlClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) return nil } -func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, - tag, name, mirror string, timeout time.Duration) (string, error) { +func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name, mirror string, + enableRegistryCA bool, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, "container": name, @@ -82,6 +82,7 @@ func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, existed, _ := nc.containerExists(ctx, name) if !existed { buildkitdCmd := "buildkitd" + // TODO: support mirror CA keypair if mirror != "" { cfg := fmt.Sprintf(` [registry."docker.io"] From 656902196da2e847bdfa30999883702f22a7e118 Mon Sep 17 00:00:00 2001 From: hang lv <xlv20@fudan.edu.cn> Date: Fri, 12 May 2023 09:11:34 +0800 Subject: [PATCH 120/355] feat: build image by platform (#1582) * feat: build image by platform Signed-off-by: hang lv <xlv20@fudan.edu.cn> * feat: support sequential multi-platform image building Signed-off-by: hang lv <xlv20@fudan.edu.cn> * feat: set goos/goarch as default target platform Signed-off-by: hang lv <xlv20@fudan.edu.cn> * fix: lint Signed-off-by: hang lv <xlv20@fudan.edu.cn> * fix: pull correct base image Signed-off-by: hang lv <xlv20@fudan.edu.cn> --------- Signed-off-by: hang lv <xlv20@fudan.edu.cn> --- go.mod | 2 +- pkg/app/build.go | 34 +++++++++++++++++++++++------ pkg/app/build/build.go | 2 ++ pkg/app/up.go | 6 +++++ pkg/builder/build.go | 27 +++++++++++++++++++++-- pkg/builder/types.go | 3 +++ pkg/builder/util.go | 14 ++++++------ pkg/editor/vscode/util.go | 4 ++-- pkg/lang/ir/graph.go | 4 +++- pkg/lang/ir/util.go | 6 ++++- pkg/lang/ir/v0/compile.go | 12 +++++++--- pkg/lang/ir/v0/types.go | 4 ++++ pkg/lang/ir/v1/compile.go | 12 +++++++--- pkg/lang/ir/v1/editor.go | 5 +---- pkg/lang/ir/v1/system.go | 2 +- pkg/lang/ir/v1/types.go | 4 ++++ pkg/types/envd.go | 2 +- pkg/util/runtimeutil/runtimeutil.go | 25 +++++++++++++++++++++ 18 files changed, 135 insertions(+), 33 deletions(-) create mode 100644 pkg/util/runtimeutil/runtimeutil.go diff --git a/go.mod b/go.mod index fa9c779d6..685d55d4f 100644 --- a/go.mod +++ b/go.mod @@ -180,7 +180,7 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.9.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect diff --git a/pkg/app/build.go b/pkg/app/build.go index 8457d0426..1db90d5bd 100644 --- a/pkg/app/build.go +++ b/pkg/app/build.go @@ -15,6 +15,7 @@ package app import ( + "strings" "time" "github.com/sirupsen/logrus" @@ -23,6 +24,7 @@ import ( buildutil "github.com/tensorchord/envd/pkg/app/build" "github.com/tensorchord/envd/pkg/app/telemetry" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" + "github.com/tensorchord/envd/pkg/util/runtimeutil" ) var CommandBuild = &cli.Command{ @@ -89,6 +91,12 @@ To build and push the image to a registry: Usage: "Import the cache (e.g. type=registry,ref=<image>)", Aliases: []string{"ic"}, }, + &cli.StringFlag{ + Name: "platform", + Usage: `Specify the target platforms for the build output (for example, windows/amd64 or linux/amd64,darwin/arm64). + Build images with same tags could cause image overwriting, platform suffixes will be added to differentiate the images.`, + DefaultText: runtimeutil.GetRuntimePlatform(), + }, }, Action: build, } @@ -106,12 +114,24 @@ func build(clicontext *cli.Context) error { logger := logrus.WithField("builder-options", opt) logger.Debug("starting build command") - builder, err := buildutil.GetBuilder(clicontext, opt) - if err != nil { - return err - } - if err = buildutil.InterpretEnvdDef(builder); err != nil { - return err + platforms := strings.Split(opt.Platform, ",") + for _, platform := range platforms { + o := opt + o.Platform = platform + if len(platforms) > 1 { + // Transform the platform suffix to comply with the tag naming rule. + o.Tag += "-" + strings.Replace(platform, "/", "-", 1) + } + builder, err := buildutil.GetBuilder(clicontext, o) + if err != nil { + return err + } + if err = buildutil.InterpretEnvdDef(builder); err != nil { + return err + } + if err := buildutil.BuildImage(clicontext, builder); err != nil { + return err + } } - return buildutil.BuildImage(clicontext, builder) + return nil } diff --git a/pkg/app/build/build.go b/pkg/app/build/build.go index a9d3c206a..6d0423501 100644 --- a/pkg/app/build/build.go +++ b/pkg/app/build/build.go @@ -135,6 +135,7 @@ func ParseBuildOpt(clicontext *cli.Context) (builder.Options, error) { exportCache := clicontext.String("export-cache") importCache := clicontext.String("import-cache") useProxy := clicontext.Bool("use-proxy") + platform := clicontext.String("platform") opt := builder.Options{ ManifestFilePath: manifest, @@ -148,6 +149,7 @@ func ParseBuildOpt(clicontext *cli.Context) (builder.Options, error) { ExportCache: exportCache, ImportCache: importCache, UseHTTPProxy: useProxy, + Platform: platform, } debug := clicontext.Bool("debug") diff --git a/pkg/app/up.go b/pkg/app/up.go index f7ac8ca0e..27043e109 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -29,6 +29,7 @@ import ( "github.com/tensorchord/envd/pkg/home" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" "github.com/tensorchord/envd/pkg/types" + "github.com/tensorchord/envd/pkg/util/runtimeutil" ) var CommandUp = &cli.Command{ @@ -141,6 +142,11 @@ var CommandUp = &cli.Command{ Usage: "Import the cache (e.g. type=registry,ref=<image>)", Aliases: []string{"ic"}, }, + &cli.StringFlag{ + Name: "platform", + Usage: "Specify the target platform for the build output, (for example, windows/amd64, linux/amd64, or darwin/arm64)", + DefaultText: runtimeutil.GetRuntimePlatform(), + }, }, Action: up, diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 04f9d7d57..4c67a25d2 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -19,6 +19,7 @@ import ( "io" "os" "path/filepath" + "strings" "github.com/cockroachdb/errors" "github.com/docker/cli/cli/config" @@ -26,6 +27,7 @@ import ( "github.com/moby/buildkit/client/llb" "github.com/moby/buildkit/session" "github.com/moby/buildkit/session/auth/authprovider" + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" "golang.org/x/sync/errgroup" @@ -157,7 +159,11 @@ func (b generalBuilder) Interpret() error { func (b generalBuilder) Compile(ctx context.Context) (*llb.Definition, error) { envName := filepath.Base(b.BuildContextDir) - def, err := b.graph.Compile(ctx, envName, b.PubKeyPath, b.Options.ProgressMode) + platform, err := parsePlatform(b.Platform) + if err != nil { + return nil, err + } + def, err := b.graph.Compile(ctx, envName, b.PubKeyPath, platform, b.Options.ProgressMode) if err != nil { return nil, errors.Wrap(err, "failed to compile build.envd") } @@ -191,8 +197,9 @@ func (b generalBuilder) imageConfig(ctx context.Context) (string, error) { env := b.graph.GetEnviron() user := b.graph.GetUser() + platform := b.graph.GetPlatform() - data, err := ImageConfigStr(labels, ports, ep, env, user) + data, err := ImageConfigStr(labels, ports, ep, env, user, platform) if err != nil { return "", errors.Wrap(err, "failed to get image config") } @@ -335,3 +342,19 @@ func constructSolveOpt(ce []client.CacheOptionsEntry, entry client.ExportEntry, } return opt } + +func parsePlatform(platform string) (*ocispecs.Platform, error) { + os, arch, variant := "linux", "amd64", "" + if platform == "" { + return &ocispecs.Platform{Architecture: arch, OS: os, Variant: variant}, nil + } + arr := strings.Split(platform, "/") + if len(arr) < 2 { + return nil, errors.New("invalid platform format, expected `os/arch[/variant]`") + } + os, arch = arr[0], arr[1] + if len(arr) >= 3 { + variant = arr[2] + } + return &ocispecs.Platform{Architecture: arch, OS: os, Variant: variant}, nil +} diff --git a/pkg/builder/types.go b/pkg/builder/types.go index ba6c899de..9127c8a4f 100644 --- a/pkg/builder/types.go +++ b/pkg/builder/types.go @@ -49,6 +49,9 @@ type Options struct { ImportCache string // UseHTTPProxy uses HTTPS_PROXY/HTTP_PROXY/NO_PROXY in the build process. UseHTTPProxy bool + // Specify the target platform for the build output. + // e.g. platform=linux/arm64,linux/amd64 + Platform string } type generalBuilder struct { diff --git a/pkg/builder/util.go b/pkg/builder/util.go index 367c9cfd0..9b35368f1 100644 --- a/pkg/builder/util.go +++ b/pkg/builder/util.go @@ -25,7 +25,7 @@ import ( "github.com/containerd/console" "github.com/moby/buildkit/client" gatewayclient "github.com/moby/buildkit/frontend/gateway/client" - v1 "github.com/opencontainers/image-spec/specs-go/v1" + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" ) @@ -35,9 +35,9 @@ const ( ) func ImageConfigStr(labels map[string]string, ports map[string]struct{}, - entrypoint []string, env []string, user string) (string, error) { - img := v1.Image{ - Config: v1.ImageConfig{ + entrypoint []string, env []string, user string, platform *ocispecs.Platform) (string, error) { + img := ocispecs.Image{ + Config: ocispecs.ImageConfig{ Labels: labels, User: user, WorkingDir: "/", @@ -45,10 +45,10 @@ func ImageConfigStr(labels map[string]string, ports map[string]struct{}, ExposedPorts: ports, Entrypoint: entrypoint, }, - Architecture: "amd64", + Architecture: platform.Architecture, // Refer to https://github.com/tensorchord/envd/issues/269#issuecomment-1152944914 - OS: "linux", - RootFS: v1.RootFS{ + OS: platform.OS, + RootFS: ocispecs.RootFS{ Type: "layers", }, } diff --git a/pkg/editor/vscode/util.go b/pkg/editor/vscode/util.go index e88139b3e..867f7dc55 100644 --- a/pkg/editor/vscode/util.go +++ b/pkg/editor/vscode/util.go @@ -22,7 +22,7 @@ import ( "strings" "github.com/cockroachdb/errors" - v1 "github.com/opencontainers/image-spec/specs-go/v1" + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" ) @@ -38,7 +38,7 @@ const ( PLATFORM_ALPINE_X64 = "alpine-x64" ) -func ConvertLLBPlatform(platform *v1.Platform) (string, error) { +func ConvertLLBPlatform(platform *ocispecs.Platform) (string, error) { // Convert opencontainers style platform to VSCode extension style platform. switch platform.OS { case "windows": diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 6600eebd7..958f8451b 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -18,12 +18,13 @@ import ( "context" "github.com/moby/buildkit/client/llb" + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/tensorchord/envd/pkg/progress/compileui" ) type Graph interface { - Compile(ctx context.Context, envName string, pub string, progressMode string) (*llb.Definition, error) + Compile(ctx context.Context, envName string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) graphDebugger graphVisitor @@ -56,4 +57,5 @@ type graphVisitor interface { GetHTTP() []HTTPInfo GetRuntimeCommands() map[string]string GetUser() string + GetPlatform() *ocispecs.Platform } diff --git a/pkg/lang/ir/util.go b/pkg/lang/ir/util.go index 99aecf99f..744f7f31b 100644 --- a/pkg/lang/ir/util.go +++ b/pkg/lang/ir/util.go @@ -26,12 +26,16 @@ import ( v1 "github.com/opencontainers/image-spec/specs-go/v1" ) -func FetchImageConfig(ctx context.Context, imageName string) (config v1.ImageConfig, err error) { +func FetchImageConfig(ctx context.Context, imageName string, platform *v1.Platform) (config v1.ImageConfig, err error) { ref, err := docker.ParseReference(fmt.Sprintf("//%s", imageName)) if err != nil { return config, errors.Wrap(err, "failed to parse image reference") } sys := types.SystemContext{} + if platform != nil { + sys.ArchitectureChoice = platform.Architecture + sys.OSChoice = platform.OS + } src, err := ref.NewImageSource(ctx, &sys) if err != nil { return config, errors.Wrap(err, "failed to get image source from ref") diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index fd0359301..706552b4f 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -24,6 +24,7 @@ import ( "github.com/cockroachdb/errors" "github.com/moby/buildkit/client/llb" + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" "github.com/spf13/viper" servertypes "github.com/tensorchord/envd-server/api/types" @@ -65,6 +66,7 @@ func NewGraph() ir.Graph { Shell: shellBASH, CondaConfig: conda, RuntimeGraph: runtimeGraph, + Platform: &ocispecs.Platform{}, } } @@ -106,7 +108,11 @@ func (g generalGraph) GetUser() string { return "envd" } -func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, progressMode string) (*llb.Definition, error) { +func (g generalGraph) GetPlatform() *ocispecs.Platform { + return g.Platform +} + +func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { return nil, errors.Wrap(err, "failed to create compileui") @@ -114,6 +120,7 @@ func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, g.Writer = w g.EnvironmentName = envName g.PublicKeyPath = pub + g.Platform = platform uid, gid, err := getUIDGID() if err != nil { @@ -123,8 +130,7 @@ func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, if err != nil { return nil, errors.Wrap(err, "failed to compile the graph") } - // TODO(gaocegege): Support multi platform. - def, err := state.Marshal(ctx, llb.LinuxAmd64) + def, err := state.Marshal(ctx, llb.Platform(*g.Platform)) if err != nil { return nil, errors.Wrap(err, "failed to marshal the llb definition") } diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go index 51edcc188..96f0ac545 100644 --- a/pkg/lang/ir/v0/types.go +++ b/pkg/lang/ir/v0/types.go @@ -15,6 +15,8 @@ package v0 import ( + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" + "github.com/tensorchord/envd/pkg/editor/vscode" "github.com/tensorchord/envd/pkg/lang/ir" "github.com/tensorchord/envd/pkg/progress/compileui" @@ -77,6 +79,8 @@ type generalGraph struct { EnvironmentName string ir.RuntimeGraph + + Platform *ocispecs.Platform } const ( diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index b7d02f3ec..176f84140 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -24,6 +24,7 @@ import ( "github.com/cockroachdb/errors" "github.com/moby/buildkit/client/llb" + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" servertypes "github.com/tensorchord/envd-server/api/types" @@ -57,6 +58,7 @@ func NewGraph() ir.Graph { UserDirectories: []string{}, Shell: shellBASH, RuntimeGraph: runtimeGraph, + Platform: &ocispecs.Platform{}, } } @@ -102,7 +104,11 @@ func (g generalGraph) GetRuntimeCommands() map[string]string { return g.RuntimeCommands } -func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, progressMode string) (*llb.Definition, error) { +func (g generalGraph) GetPlatform() *ocispecs.Platform { + return g.Platform +} + +func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { return nil, errors.Wrap(err, "failed to create compileui") @@ -110,6 +116,7 @@ func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, g.Writer = w g.EnvironmentName = envName g.PublicKeyPath = pub + g.Platform = platform uid, gid, err := g.getUIDGID() if err != nil { @@ -119,8 +126,7 @@ func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, if err != nil { return nil, errors.Wrap(err, "failed to compile the graph") } - // TODO(gaocegege): Support multi platform. - def, err := state.Marshal(ctx, llb.LinuxAmd64) + def, err := state.Marshal(ctx, llb.Platform(*g.Platform)) if err != nil { return nil, errors.Wrap(err, "failed to marshal the llb definition") } diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index 02ed8732b..c081fd90d 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -20,7 +20,6 @@ import ( "github.com/cockroachdb/errors" "github.com/moby/buildkit/client/llb" - v1 "github.com/opencontainers/image-spec/specs-go/v1" "github.com/tensorchord/envd/pkg/config" "github.com/tensorchord/envd/pkg/editor/vscode" @@ -31,9 +30,7 @@ import ( ) func (g generalGraph) compileVSCode(root llb.State) (llb.State, error) { - // TODO(n063h): support multiple platforms - p := &v1.Platform{Architecture: "amd64", OS: "linux"} - platform, err := vscode.ConvertLLBPlatform(p) + platform, err := vscode.ConvertLLBPlatform(g.Platform) if err != nil { return llb.State{}, errors.Wrap(err, "failed to convert llb platform") } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 480c587ab..8b4205421 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -354,7 +354,7 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { if !g.Dev { // fetching the image config may take some time - config, err := ir.FetchImageConfig(context.Background(), g.Image) + config, err := ir.FetchImageConfig(context.Background(), g.Image, g.Platform) if err != nil { return llb.State{}, err } diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 1c34077a7..cc869d6a3 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -15,6 +15,8 @@ package v1 import ( + ocispecs "github.com/opencontainers/image-spec/specs-go/v1" + "github.com/tensorchord/envd/pkg/editor/vscode" "github.com/tensorchord/envd/pkg/lang/ir" "github.com/tensorchord/envd/pkg/progress/compileui" @@ -78,6 +80,8 @@ type generalGraph struct { EnvironmentName string ir.RuntimeGraph + + Platform *ocispecs.Platform } const ( diff --git a/pkg/types/envd.go b/pkg/types/envd.go index 560b396f6..567c8aa79 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -36,7 +36,7 @@ const ( PythonBaseImage = "ubuntu:20.04" EnvdStarshipImage = "tensorchord/starship:v0.0.1" // supervisor - HorustImage = "tensorchord/horust:v0.2.1" + HorustImage = "tensorchord/horust:v0.2.3" HorustServiceDir = "/etc/horust/services" HorustLogDir = "/var/log/horust" // env diff --git a/pkg/util/runtimeutil/runtimeutil.go b/pkg/util/runtimeutil/runtimeutil.go new file mode 100644 index 000000000..5e5ccfca2 --- /dev/null +++ b/pkg/util/runtimeutil/runtimeutil.go @@ -0,0 +1,25 @@ +// Copyright 2023 The envd Authors +// Copyright 2023 mateors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package runtimeutil + +import ( + "fmt" + "runtime" +) + +func GetRuntimePlatform() string { + return fmt.Sprintf("%s/%s", runtime.GOOS, runtime.GOARCH) +} From 93203f1275458507bce2f4110bf3e4bd9cec0f25 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 12 May 2023 09:15:57 +0800 Subject: [PATCH 121/355] docs: updated CHANGELOG.md (#1605) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 699fc193b..b56a2c185 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## v0.3.22 (2023-05-12) + + * [6569021](https://github.com/tensorchord/envd/commit/656902196da2e847bdfa30999883702f22a7e118) feat: build image by platform (#1582) + * [2839aa3](https://github.com/tensorchord/envd/commit/2839aa33bf097b440064aad9a1aaba461647db50) feat: support mirror ca for buildkitd (#1602) + * [2fbb447](https://github.com/tensorchord/envd/commit/2fbb4475c7da55dc4fc23e25dfb6f6c8666f63cf) chore(deps): bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible (#1604) + * [fd45847](https://github.com/tensorchord/envd/commit/fd45847e4ebec79bf644d291fa4d2420ea032373) fix: bootstrap with key pair using the same path for pri/pub key (#1603) + * [2fa41c7](https://github.com/tensorchord/envd/commit/2fa41c7388af41e3ed8de2653d5402ad4bf52369) fix: merge language packages to system packages (#1593) + * [4306ddf](https://github.com/tensorchord/envd/commit/4306ddf8b490b546f7292df5605a866c63110686) chore(deps): bump github.com/urfave/cli/v2 from 2.25.2 to 2.25.3 (#1600) + * [e9c1cb9](https://github.com/tensorchord/envd/commit/e9c1cb9efe743a241c8c7436402e866c76d73d53) chore(deps): bump github.com/docker/cli from 24.0.0-beta.2+incompatible to 24.0.0-rc.2+incompatible (#1598) + * [0700488](https://github.com/tensorchord/envd/commit/0700488320abbaf4a142a93c2f497bf2915d6da7) chore(deps): bump golang.org/x/term from 0.7.0 to 0.8.0 (#1599) + * [d109a28](https://github.com/tensorchord/envd/commit/d109a280ff9c67f64cf8275dd712ae2c471c6994) chore(deps): bump github.com/moby/term from 0.0.0-20221120202655-abb19827d345 to 0.5.0 (#1601) + * [e5972b2](https://github.com/tensorchord/envd/commit/e5972b27eb700af06b739f17d0fcbbaa659f0798) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#1597) + * [4f731b9](https://github.com/tensorchord/envd/commit/4f731b9a6ebfa2fb105c34dadd88f053c9e8cbb6) chore(deps): bump crate-ci/typos from 1.14.8 to 1.14.9 (#1596) + * [d4df02a](https://github.com/tensorchord/envd/commit/d4df02a4e15e73aff64dfd38cc68ffc2058892f3) fix: In debug model, there is progress display. (#1595) + * [8ab73d8](https://github.com/tensorchord/envd/commit/8ab73d8a7faa9b9fa4a0f882ae904683e2867868) fix(v1): rm bash absolute path (#1594) + +### Contributors + + * Keming + * dependabot[bot] + * hang lv + * rrain7 + ## v0.3.21 (2023-05-05) * [0a55acd](https://github.com/tensorchord/envd/commit/0a55acd03c6daae2f1de640e4bc751115a8f3564) Use default python in the base image (#1589) From a1615f2083f7c8c79d8bcf9b91578e03bfbfa56b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 13:51:01 +0800 Subject: [PATCH 122/355] chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2 to 1.1.0-rc.3 (#1606) chore(deps): bump github.com/opencontainers/image-spec Bumps [github.com/opencontainers/image-spec](https://github.com/opencontainers/image-spec) from 1.1.0-rc2 to 1.1.0-rc.3. - [Release notes](https://github.com/opencontainers/image-spec/releases) - [Changelog](https://github.com/opencontainers/image-spec/blob/main/RELEASES.md) - [Commits](https://github.com/opencontainers/image-spec/compare/v1.1.0-rc2...v1.1.0-rc3) --- updated-dependencies: - dependency-name: github.com/opencontainers/image-spec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 +++-- go.sum | 9 ++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 685d55d4f..c30c4ad19 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.3 github.com/containerd/containerd v1.6.19 - github.com/containers/image/v5 v5.25.0 + github.com/containers/image/v5 v5.24.1 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.0-rc.2+incompatible github.com/docker/docker v23.0.2+incompatible @@ -81,6 +81,7 @@ require ( github.com/emirpasic/gods v1.12.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect + github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -180,7 +181,6 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.9.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect @@ -195,6 +195,7 @@ require ( google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index bbcd71f60..a2313d73d 100644 --- a/go.sum +++ b/go.sum @@ -298,8 +298,8 @@ github.com/containerd/ttrpc v1.2.1/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= -github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= +github.com/containers/image/v5 v5.24.1 h1:XaRw3FJmvZtI297uBVTJluUVH4AQJ//YpHviaOw0C4M= +github.com/containers/image/v5 v5.24.1/go.mod h1:oss5F6ssGQz8ZtC79oY+fuzYA3m3zBek9tq9gmhuvHc= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U= @@ -372,6 +372,7 @@ github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nG github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= @@ -1003,8 +1004,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1604,8 +1603,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From bd07f0fef3e914f2ecdad414651392e7ebb97eb9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 13:57:53 +0800 Subject: [PATCH 123/355] chore(deps): bump golang.org/x/crypto from 0.8.0 to 0.9.0 (#1609) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.8.0 to 0.9.0. - [Commits](https://github.com/golang/crypto/compare/v0.8.0...v0.9.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index c30c4ad19..3e9e78bfd 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.3 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.8.0 + golang.org/x/crypto v0.9.0 golang.org/x/sync v0.1.0 golang.org/x/term v0.8.0 golang.org/x/time v0.3.0 @@ -182,7 +182,7 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.9.0 // indirect + golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect diff --git a/go.sum b/go.sum index a2313d73d..8e77e07a0 100644 --- a/go.sum +++ b/go.sum @@ -992,8 +992,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ= -golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1091,8 +1091,8 @@ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= -golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From 8e3deebd9b2e2b5655eb3294774435207bf44d73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 13:59:09 +0800 Subject: [PATCH 124/355] chore(deps): bump github.com/charmbracelet/bubbletea from 0.23.2 to 0.24.0 (#1610) chore(deps): bump github.com/charmbracelet/bubbletea Bumps [github.com/charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea) from 0.23.2 to 0.24.0. - [Release notes](https://github.com/charmbracelet/bubbletea/releases) - [Commits](https://github.com/charmbracelet/bubbletea/compare/v0.23.2...v0.24.0) --- updated-dependencies: - dependency-name: github.com/charmbracelet/bubbletea dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 11 ++++------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 3e9e78bfd..d36d5e20f 100644 --- a/go.mod +++ b/go.mod @@ -5,10 +5,10 @@ go 1.19 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 - github.com/charmbracelet/bubbletea v0.23.2 + github.com/charmbracelet/bubbletea v0.24.0 github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 - github.com/containerd/console v1.0.3 + github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 github.com/containerd/containerd v1.6.19 github.com/containers/image/v5 v5.24.1 github.com/creack/pty v1.1.18 diff --git a/go.sum b/go.sum index 8e77e07a0..147bba733 100644 --- a/go.sum +++ b/go.sum @@ -226,7 +226,6 @@ github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPd github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aymanbagabas/go-osc52 v1.2.1/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= @@ -241,8 +240,8 @@ github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/bubbletea v0.23.2 h1:vuUJ9HJ7b/COy4I30e8xDVQ+VRDUEFykIjryPfgsdps= -github.com/charmbracelet/bubbletea v0.23.2/go.mod h1:FaP3WUivcTM0xOKNmhciz60M6I+weYLF76mr1JyI7sM= +github.com/charmbracelet/bubbletea v0.24.0 h1:l8PHrft/GIeikDPCUhQe53AJrDD8xGSn0Agirh8xbe8= +github.com/charmbracelet/bubbletea v0.24.0/go.mod h1:rK3g/2+T8vOSEkNHvtq40umJpeVYDn6bLaqbgzhL/hg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= @@ -276,8 +275,9 @@ github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1 github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= @@ -665,7 +665,6 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= @@ -721,7 +720,6 @@ github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELU github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.14.0/go.mod h1:kG/pF1E7fh949Xhe156crRUrHNyK221IuGO7Ez60Uc8= github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= @@ -1221,7 +1219,6 @@ golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220204135822-1c1b9b1eba6a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From 889cf6d41e54a7d2b15277e90993d39927516b5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 14:23:01 +0800 Subject: [PATCH 125/355] chore(deps): bump github.com/containerd/containerd from 1.6.19 to 1.7.1 (#1607) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.6.19 to 1.7.1. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.6.19...v1.7.1) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 13 ++++++++----- go.sum | 29 ++++++++++++++++++----------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/go.mod b/go.mod index d36d5e20f..07db5b625 100644 --- a/go.mod +++ b/go.mod @@ -9,11 +9,11 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 - github.com/containerd/containerd v1.6.19 + github.com/containerd/containerd v1.7.1 github.com/containers/image/v5 v5.24.1 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.0-rc.2+incompatible - github.com/docker/docker v23.0.2+incompatible + github.com/docker/docker v23.0.3+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 @@ -30,7 +30,7 @@ require ( github.com/onsi/ginkgo/v2 v2.9.4 github.com/onsi/gomega v1.27.6 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc2 + github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.1 @@ -56,9 +56,10 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v0.12.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.2.1 // indirect - github.com/Microsoft/go-winio v0.6.0 // indirect + github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect @@ -69,12 +70,14 @@ require ( github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect github.com/containerd/continuity v0.3.0 // indirect - github.com/containerd/ttrpc v1.2.1 // indirect + github.com/containerd/ttrpc v1.2.2 // indirect github.com/containerd/typeurl v1.0.2 // indirect + github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.1.7 // indirect github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect diff --git a/go.sum b/go.sum index 147bba733..86bd992f2 100644 --- a/go.sum +++ b/go.sum @@ -190,6 +190,9 @@ cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuW cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -204,10 +207,10 @@ github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKz github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.6.0 h1:slsWYD/zyx7lCXoZVlvQrj0hPTM1HI4+v1sIda2yDvg= -github.com/Microsoft/go-winio v0.6.0/go.mod h1:cTAf44im0RAYeL23bpB+fzCyDH2MJiz2BO69KH/soAE= +github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= +github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.9.8 h1:lf7xxK2+Ikbj9sVf2QZsouGjRjEp2STj1yDHgoVtU5k= +github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= @@ -272,7 +275,7 @@ github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5w github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= @@ -280,24 +283,26 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= -github.com/containerd/containerd v1.6.19/go.mod h1:HZCDMn4v/Xl2579/MvtOC2M206i+JJ6VxFWU/NetrGY= +github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go= +github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= +github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v1.2.1 h1:VWv/Rzx023TBLv4WQ+9WPXlBG/s3rsRjY3i9AJ2BJdE= -github.com/containerd/ttrpc v1.2.1/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= +github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= +github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= +github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/containers/image/v5 v5.24.1 h1:XaRw3FJmvZtI297uBVTJluUVH4AQJ//YpHviaOw0C4M= github.com/containers/image/v5 v5.24.1/go.mod h1:oss5F6ssGQz8ZtC79oY+fuzYA3m3zBek9tq9gmhuvHc= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= @@ -321,6 +326,7 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -698,6 +704,7 @@ github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2J github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -758,8 +765,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= From cef883bedc8efe4482bcab9e96ede59b80acd608 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 May 2023 14:23:35 +0800 Subject: [PATCH 126/355] chore(deps): bump golang.org/x/sync from 0.1.0 to 0.2.0 (#1608) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.1.0 to 0.2.0. - [Commits](https://github.com/golang/sync/compare/v0.1.0...v0.2.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 07db5b625..7f4829896 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/urfave/cli/v2 v2.25.3 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.9.0 - golang.org/x/sync v0.1.0 + golang.org/x/sync v0.2.0 golang.org/x/term v0.8.0 golang.org/x/time v0.3.0 ) diff --git a/go.sum b/go.sum index 86bd992f2..fc8a0fdcb 100644 --- a/go.sum +++ b/go.sum @@ -1139,8 +1139,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 0aef7ceebe7a316c7068ffd89f79a06d184e6efa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 13:11:45 +0800 Subject: [PATCH 127/355] chore(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.3 (#1615) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.2 to 1.8.3. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.8.2...v1.8.3) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 7f4829896..92771c0a0 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.0 github.com/spf13/viper v1.15.0 - github.com/stretchr/testify v1.8.2 + github.com/stretchr/testify v1.8.3 github.com/syncthing/syncthing v1.23.4 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea diff --git a/go.sum b/go.sum index fc8a0fdcb..290f4009c 100644 --- a/go.sum +++ b/go.sum @@ -886,8 +886,9 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2 h1:+h33VjcLVPDHtOdpUCuF+7gSuG3yGIftsP1YvFihtJ8= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= From 4c34791959433ee6a2e691884b83666def08ebff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 13:13:24 +0800 Subject: [PATCH 128/355] chore(deps): bump github.com/docker/cli from 24.0.0-rc.2+incompatible to 24.0.1+incompatible (#1616) chore(deps): bump github.com/docker/cli Bumps [github.com/docker/cli](https://github.com/docker/cli) from 24.0.0-rc.2+incompatible to 24.0.1+incompatible. - [Commits](https://github.com/docker/cli/compare/v24.0.0-rc.2...v24.0.1) --- updated-dependencies: - dependency-name: github.com/docker/cli dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 92771c0a0..80144350d 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/containerd/containerd v1.7.1 github.com/containers/image/v5 v5.24.1 github.com/creack/pty v1.1.18 - github.com/docker/cli v24.0.0-rc.2+incompatible + github.com/docker/cli v24.0.1+incompatible github.com/docker/docker v23.0.3+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 diff --git a/go.sum b/go.sum index 290f4009c..4e8584419 100644 --- a/go.sum +++ b/go.sum @@ -334,8 +334,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= -github.com/docker/cli v24.0.0-rc.2+incompatible h1:GxSh1DotrAPojZgExY3UxBZwJ1GZQUBOfOGjlhjwFVE= -github.com/docker/cli v24.0.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.1+incompatible h1:uVl5Xv/39kZJpDo9VaktTOYBc702sdYYF33FqwUG/dM= +github.com/docker/cli v24.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From e59c2897d75316c65e8082c162b0cc4bb37a055c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 13:15:08 +0800 Subject: [PATCH 129/355] chore(deps): bump crate-ci/typos from 1.14.9 to 1.14.10 (#1611) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.9 to 1.14.10. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.9...v1.14.10) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 915e16534..083e4cdfe 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.9 + uses: crate-ci/typos@v1.14.10 with: config: ./typos.toml lint: From 77ff5a5de9e46fb4a4176e31c3b513d27ab06b08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 13:20:15 +0800 Subject: [PATCH 130/355] chore(deps): bump github.com/sirupsen/logrus from 1.9.0 to 1.9.2 (#1614) Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) from 1.9.0 to 1.9.2. - [Release notes](https://github.com/sirupsen/logrus/releases) - [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md) - [Commits](https://github.com/sirupsen/logrus/compare/v1.9.0...v1.9.2) --- updated-dependencies: - dependency-name: github.com/sirupsen/logrus dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 80144350d..6551c5877 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.1 github.com/segmentio/analytics-go/v3 v3.2.1 - github.com/sirupsen/logrus v1.9.0 + github.com/sirupsen/logrus v1.9.2 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.3 github.com/syncthing/syncthing v1.23.4 diff --git a/go.sum b/go.sum index 4e8584419..ca29dbcb3 100644 --- a/go.sum +++ b/go.sum @@ -847,8 +847,9 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= +github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= From 8ab63891391e32d9f4c384ff50d6da97fd5e5074 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 13:40:47 +0800 Subject: [PATCH 131/355] chore(deps): bump github.com/containers/image/v5 from 5.24.1 to 5.25.0 (#1612) Bumps [github.com/containers/image/v5](https://github.com/containers/image) from 5.24.1 to 5.25.0. - [Release notes](https://github.com/containers/image/releases) - [Commits](https://github.com/containers/image/compare/v5.24.1...v5.25.0) --- updated-dependencies: - dependency-name: github.com/containers/image/v5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 ++--- go.sum | 9 +++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 6551c5877..b74efbc5e 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 github.com/containerd/containerd v1.7.1 - github.com/containers/image/v5 v5.24.1 + github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.1+incompatible github.com/docker/docker v23.0.3+incompatible @@ -84,7 +84,6 @@ require ( github.com/emirpasic/gods v1.12.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -184,6 +183,7 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect @@ -198,7 +198,6 @@ require ( google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index ca29dbcb3..a96321b74 100644 --- a/go.sum +++ b/go.sum @@ -303,8 +303,8 @@ github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/containers/image/v5 v5.24.1 h1:XaRw3FJmvZtI297uBVTJluUVH4AQJ//YpHviaOw0C4M= -github.com/containers/image/v5 v5.24.1/go.mod h1:oss5F6ssGQz8ZtC79oY+fuzYA3m3zBek9tq9gmhuvHc= +github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= +github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U= @@ -378,7 +378,6 @@ github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nG github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= @@ -1011,6 +1010,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1609,8 +1610,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From ef724776d2da7e75c092c02d5177d5e2c8d4914c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 13:41:41 +0800 Subject: [PATCH 132/355] chore(deps): bump github.com/mattn/go-isatty from 0.0.18 to 0.0.19 (#1613) Bumps [github.com/mattn/go-isatty](https://github.com/mattn/go-isatty) from 0.0.18 to 0.0.19. - [Commits](https://github.com/mattn/go-isatty/compare/v0.0.18...v0.0.19) --- updated-dependencies: - dependency-name: github.com/mattn/go-isatty dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b74efbc5e..ed3ffb195 100644 --- a/go.mod +++ b/go.mod @@ -22,7 +22,7 @@ require ( github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 github.com/hashicorp/go-getter v1.7.1 - github.com/mattn/go-isatty v0.0.18 + github.com/mattn/go-isatty v0.0.19 github.com/moby/buildkit v0.11.4 github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 diff --git a/go.sum b/go.sum index a96321b74..052364d27 100644 --- a/go.sum +++ b/go.sum @@ -661,8 +661,8 @@ github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2y github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.0-20170201023540-14207d285c6c/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= From 7500fa282a582883501c7a70145b4b36f5d2d40b Mon Sep 17 00:00:00 2001 From: Teddy Xinyuan Chen <45612704+tddschn@users.noreply.github.com> Date: Tue, 23 May 2023 10:34:27 +0800 Subject: [PATCH 133/355] Documentation improvements (typos, grammar etc) (#1617) * fix envd/api/v0/__init__.py * fix envd/api/v1/__init__.py * fix install.py and runtime.py --- envd/api/v0/__init__.py | 4 ++-- envd/api/v0/install.py | 2 +- envd/api/v0/runtime.py | 2 +- envd/api/v1/__init__.py | 4 ++-- envd/api/v1/install.py | 2 +- envd/api/v1/runtime.py | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/envd/api/v0/__init__.py b/envd/api/v0/__init__.py index 422fde531..72fbb639d 100644 --- a/envd/api/v0/__init__.py +++ b/envd/api/v0/__init__.py @@ -29,7 +29,7 @@ def base(os: str, language: str, image: Optional[str]): Args: os (str): The operating system (i.e. `ubuntu20.04`) - language (str): The programing language dependency (i.e. `python3.8`) + language (str): The programming language dependency (i.e. `python3.8`) image (Optional[str]): Custom image (i.e. `python:3.9-slim`) """ @@ -80,7 +80,7 @@ def include(git: str): """Import from another git repo This will pull the git repo and execute all the `envd` files. The return value will be a module - contains all the variables/functions defined (expect those has `_` prefix). + contains all the variables/functions defined (except the ones with `_` prefix). Args: git (str): git URL diff --git a/envd/api/v0/install.py b/envd/api/v0/install.py index a5c6929cb..04d2160a0 100644 --- a/envd/api/v0/install.py +++ b/envd/api/v0/install.py @@ -25,7 +25,7 @@ def apt_packages(name: List[str]): - """Install package by system-level package manager (apt on Ubuntu) + """Install package using the system package manager (apt on Ubuntu) Args: name (List[str]): apt package name list diff --git a/envd/api/v0/runtime.py b/envd/api/v0/runtime.py index 6791e9fa3..1df66559a 100644 --- a/envd/api/v0/runtime.py +++ b/envd/api/v0/runtime.py @@ -64,7 +64,7 @@ def daemon(commands: List[List[str]]): """Run daemon processes in the container Proposal: https://github.com/tensorchord/envd/pull/769 - It's better to redirect the logs to local files for debug purposes. + It's better to redirect the logs to local files for debugging purposes. You can find the generated horust config files under `/etc/horust/services` and log files under `/var/log/horust` in the container. diff --git a/envd/api/v1/__init__.py b/envd/api/v1/__init__.py index aac464e60..e30ac5c84 100644 --- a/envd/api/v1/__init__.py +++ b/envd/api/v1/__init__.py @@ -37,7 +37,7 @@ def base(image: str = "ubuntu:20.04", dev: bool = False): """Set up the base env. Args: - image (str): docker image, can be any Debian-based images + image (str): docker image, can be any Debian-based image dev (bool): enabling the dev env will add lots of development related libraries like envd-sshd, vim, git, shell prompt, vscode extensions, etc. """ @@ -89,7 +89,7 @@ def include(git: str): """Import from another git repo This will pull the git repo and execute all the `envd` files. The return value will be a module - contains all the variables/functions defined (expect those has `_` prefix). + contains all the variables/functions defined (except the ones with `_` prefix). Args: git (str): git URL diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index 792f1ff06..c3433d595 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -58,7 +58,7 @@ def julia(): def apt_packages(name: List[str] = []): - """Install package by system-level package manager (apt on Ubuntu). + """Install package using the system package manager (apt on Ubuntu). Args: name (List[str]): apt package name list diff --git a/envd/api/v1/runtime.py b/envd/api/v1/runtime.py index a4cbbe974..1d96a439a 100644 --- a/envd/api/v1/runtime.py +++ b/envd/api/v1/runtime.py @@ -70,7 +70,7 @@ def daemon(commands: List[List[str]]): """Run daemon processes in the container Proposal: https://github.com/tensorchord/envd/pull/769 - It's better to redirect the logs to local files for debug purposes. + It's better to redirect the logs to local files for debugging purposes. You can find the generated horust config files under `/etc/horust/services` and log files under `/var/log/horust` in the container. From 8a175ed71d59859f57592ddbe73203c4dd8dd6c5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 25 May 2023 16:22:35 +0800 Subject: [PATCH 134/355] feat: create dest path in io.copy (#1619) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v0/system.go | 1 + pkg/lang/ir/v1/system.go | 1 + 2 files changed, 2 insertions(+) diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 35312481a..8c9491cdb 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -86,6 +86,7 @@ func (g generalGraph) compileCopy(root llb.State) llb.State { for _, c := range g.Copy { result = result.File(llb.Copy( llb.Local(flag.FlagBuildContext), c.Source, c.Destination, + &llb.CopyInfo{CreateDestPath: true}, llb.WithUIDGID(g.uid, g.gid))) } return result diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 8b4205421..1576309b4 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -175,6 +175,7 @@ func (g generalGraph) compileCopy(root llb.State) llb.State { for _, c := range g.Copy { result = result.File(llb.Copy( llb.Local(flag.FlagBuildContext), c.Source, c.Destination, + &llb.CopyInfo{CreateDestPath: true}, llb.WithUIDGID(g.uid, g.gid))) } return result From 5e5503d3ae9efbb6cbab2ee2376e55ee3411f702 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 May 2023 16:24:33 +0800 Subject: [PATCH 135/355] docs: updated CHANGELOG.md (#1620) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b56a2c185..93b94e6c4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,27 @@ # Changelog +## v0.3.23 (2023-05-25) + + * [8a175ed](https://github.com/tensorchord/envd/commit/8a175ed71d59859f57592ddbe73203c4dd8dd6c5) feat: create dest path in io.copy (#1619) + * [7500fa2](https://github.com/tensorchord/envd/commit/7500fa282a582883501c7a70145b4b36f5d2d40b) Documentation improvements (typos, grammar etc) (#1617) + * [ef72477](https://github.com/tensorchord/envd/commit/ef724776d2da7e75c092c02d5177d5e2c8d4914c) chore(deps): bump github.com/mattn/go-isatty from 0.0.18 to 0.0.19 (#1613) + * [8ab6389](https://github.com/tensorchord/envd/commit/8ab63891391e32d9f4c384ff50d6da97fd5e5074) chore(deps): bump github.com/containers/image/v5 from 5.24.1 to 5.25.0 (#1612) + * [77ff5a5](https://github.com/tensorchord/envd/commit/77ff5a5de9e46fb4a4176e31c3b513d27ab06b08) chore(deps): bump github.com/sirupsen/logrus from 1.9.0 to 1.9.2 (#1614) + * [e59c289](https://github.com/tensorchord/envd/commit/e59c2897d75316c65e8082c162b0cc4bb37a055c) chore(deps): bump crate-ci/typos from 1.14.9 to 1.14.10 (#1611) + * [4c34791](https://github.com/tensorchord/envd/commit/4c34791959433ee6a2e691884b83666def08ebff) chore(deps): bump github.com/docker/cli from 24.0.0-rc.2+incompatible to 24.0.1+incompatible (#1616) + * [0aef7ce](https://github.com/tensorchord/envd/commit/0aef7ceebe7a316c7068ffd89f79a06d184e6efa) chore(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.3 (#1615) + * [cef883b](https://github.com/tensorchord/envd/commit/cef883bedc8efe4482bcab9e96ede59b80acd608) chore(deps): bump golang.org/x/sync from 0.1.0 to 0.2.0 (#1608) + * [889cf6d](https://github.com/tensorchord/envd/commit/889cf6d41e54a7d2b15277e90993d39927516b5a) chore(deps): bump github.com/containerd/containerd from 1.6.19 to 1.7.1 (#1607) + * [8e3deeb](https://github.com/tensorchord/envd/commit/8e3deebd9b2e2b5655eb3294774435207bf44d73) chore(deps): bump github.com/charmbracelet/bubbletea from 0.23.2 to 0.24.0 (#1610) + * [bd07f0f](https://github.com/tensorchord/envd/commit/bd07f0fef3e914f2ecdad414651392e7ebb97eb9) chore(deps): bump golang.org/x/crypto from 0.8.0 to 0.9.0 (#1609) + * [a1615f2](https://github.com/tensorchord/envd/commit/a1615f2083f7c8c79d8bcf9b91578e03bfbfa56b) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2 to 1.1.0-rc.3 (#1606) + +### Contributors + + * Keming + * Teddy Xinyuan Chen + * dependabot[bot] + ## v0.3.22 (2023-05-12) * [6569021](https://github.com/tensorchord/envd/commit/656902196da2e847bdfa30999883702f22a7e118) feat: build image by platform (#1582) From fa5e457a785b95e5453be51fa5bf01c780f21bfd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 11:17:16 +0800 Subject: [PATCH 136/355] chore(deps): bump crate-ci/typos from 1.14.10 to 1.14.11 (#1623) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.10 to 1.14.11. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.10...v1.14.11) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 083e4cdfe..94d2d7adb 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.10 + uses: crate-ci/typos@v1.14.11 with: config: ./typos.toml lint: From c7dc7f945e096c54a1b30b23e197fed94ad6eda7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 11:18:32 +0800 Subject: [PATCH 137/355] chore(deps): bump dependabot/fetch-metadata from 1.4.0 to 1.5.1 (#1622) Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.4.0 to 1.5.1. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.4.0...v1.5.1) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-merge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 3a6a561ec..4bc0e5b76 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.4.0 + uses: dependabot/fetch-metadata@v1.5.1 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Approve PR From 886c1f5c5299251f6fb218df291a676bdade502b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 11:19:18 +0800 Subject: [PATCH 138/355] chore(deps): bump pypa/cibuildwheel from 2.12.3 to 2.13.0 (#1621) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.12.3 to 2.13.0. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.12.3...v2.13.0) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d7e6b0a0d..a32c015b1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.12.3 + uses: pypa/cibuildwheel@v2.13.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 637b1f2447dc21155b5038ea7001658f5db064ed Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 03:27:34 +0000 Subject: [PATCH 139/355] chore(deps): bump github.com/urfave/cli/v2 from 2.25.3 to 2.25.4 (#1624) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.3 to 2.25.4. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.3...v2.25.4) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index ed3ffb195..23245a958 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.25.3 + github.com/urfave/cli/v2 v2.25.4 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.9.0 golang.org/x/sync v0.2.0 diff --git a/go.sum b/go.sum index 052364d27..f26d99a24 100644 --- a/go.sum +++ b/go.sum @@ -921,8 +921,8 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= -github.com/urfave/cli/v2 v2.25.3 h1:VJkt6wvEBOoSjPFQvOkv6iWIrsJyCrKGtCtxXWwmGeY= -github.com/urfave/cli/v2 v2.25.3/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.4 h1:HyYwPrTO3im9rYhUff/ZNs78eolxt0nJ4LN+9yJKSH4= +github.com/urfave/cli/v2 v2.25.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 2f37763851fc918707589be335758348eb95dd0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 03:33:45 +0000 Subject: [PATCH 140/355] chore(deps): bump github.com/onsi/gomega from 1.27.6 to 1.27.7 (#1626) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.6 to 1.27.7. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.6...v1.27.7) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 23245a958..2ebcd18f5 100644 --- a/go.mod +++ b/go.mod @@ -27,8 +27,8 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.9.4 - github.com/onsi/gomega v1.27.6 + github.com/onsi/ginkgo/v2 v2.9.5 + github.com/onsi/gomega v1.27.7 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 @@ -189,7 +189,7 @@ require ( golang.org/x/oauth2 v0.6.0 // indirect golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.8.0 // indirect + golang.org/x/tools v0.9.1 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.110.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index f26d99a24..35b093bb5 100644 --- a/go.sum +++ b/go.sum @@ -749,14 +749,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.9.4 h1:xR7vG4IXt5RWx6FfIjyAtsoMAtnc3C/rFXBBd2AjZwE= -github.com/onsi/ginkgo/v2 v2.9.4/go.mod h1:gCQYp2Q+kSoIj7ykSVb9nskRSsR6PUj4AiLywzIhbKM= +github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= +github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= -github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= +github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1340,8 +1340,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= -golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= +golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= +golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 67f096235fc580542bda91fa5207374277c4b912 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 May 2023 12:02:16 +0800 Subject: [PATCH 141/355] chore(deps): bump github.com/charmbracelet/bubbletea from 0.24.0 to 0.24.1 (#1627) chore(deps): bump github.com/charmbracelet/bubbletea Bumps [github.com/charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea) from 0.24.0 to 0.24.1. - [Release notes](https://github.com/charmbracelet/bubbletea/releases) - [Commits](https://github.com/charmbracelet/bubbletea/compare/v0.24.0...v0.24.1) --- updated-dependencies: - dependency-name: github.com/charmbracelet/bubbletea dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 2ebcd18f5..e48df0538 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 - github.com/charmbracelet/bubbletea v0.24.0 + github.com/charmbracelet/bubbletea v0.24.1 github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 diff --git a/go.sum b/go.sum index 35b093bb5..13a0c22b5 100644 --- a/go.sum +++ b/go.sum @@ -243,8 +243,8 @@ github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/bubbletea v0.24.0 h1:l8PHrft/GIeikDPCUhQe53AJrDD8xGSn0Agirh8xbe8= -github.com/charmbracelet/bubbletea v0.24.0/go.mod h1:rK3g/2+T8vOSEkNHvtq40umJpeVYDn6bLaqbgzhL/hg= +github.com/charmbracelet/bubbletea v0.24.1 h1:LpdYfnu+Qc6XtvMz6d/6rRY71yttHTP5HtrjMgWvixc= +github.com/charmbracelet/bubbletea v0.24.1/go.mod h1:rK3g/2+T8vOSEkNHvtq40umJpeVYDn6bLaqbgzhL/hg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= From 7d6f107aa2a65572b549169fe92a8f992d592f4c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 31 May 2023 15:52:43 +0800 Subject: [PATCH 142/355] chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 (#1625) chore(deps): bump github.com/opencontainers/image-spec Bumps [github.com/opencontainers/image-spec](https://github.com/opencontainers/image-spec) from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3. - [Release notes](https://github.com/opencontainers/image-spec/releases) - [Changelog](https://github.com/opencontainers/image-spec/blob/main/RELEASES.md) - [Commits](https://github.com/opencontainers/image-spec/commits/v1.1.0-rc3) --- updated-dependencies: - dependency-name: github.com/opencontainers/image-spec dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 12 +++++------- go.sum | 30 +++++++++++------------------- 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index e48df0538..777549b62 100644 --- a/go.mod +++ b/go.mod @@ -9,8 +9,8 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 - github.com/containerd/containerd v1.7.1 - github.com/containers/image/v5 v5.25.0 + github.com/containerd/containerd v1.6.19 + github.com/containers/image/v5 v5.24.1 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.1+incompatible github.com/docker/docker v23.0.3+incompatible @@ -30,7 +30,7 @@ require ( github.com/onsi/ginkgo/v2 v2.9.5 github.com/onsi/gomega v1.27.7 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b + github.com/opencontainers/image-spec v1.1.0-rc2 github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.1 @@ -56,7 +56,6 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v0.12.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect @@ -72,18 +71,17 @@ require ( github.com/containerd/continuity v0.3.0 // indirect github.com/containerd/ttrpc v1.2.2 // indirect github.com/containerd/typeurl v1.0.2 // indirect - github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.1.7 // indirect github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect + github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -183,7 +181,6 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect @@ -198,6 +195,7 @@ require ( google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 13a0c22b5..cc430b77a 100644 --- a/go.sum +++ b/go.sum @@ -190,9 +190,6 @@ cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuW cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -210,7 +207,7 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= +github.com/Microsoft/hcsshim v0.9.8 h1:lf7xxK2+Ikbj9sVf2QZsouGjRjEp2STj1yDHgoVtU5k= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= @@ -275,7 +272,7 @@ github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5w github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= @@ -283,14 +280,14 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.7.1 h1:k8DbDkSOwt5rgxQ3uCI4WMKIJxIndSCBUaGm5oRn+Go= -github.com/containerd/containerd v1.7.1/go.mod h1:gA+nJUADRBm98QS5j5RPROnt0POQSMK+r7P7EGMC/Qc= +github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= +github.com/containerd/containerd v1.6.19/go.mod h1:HZCDMn4v/Xl2579/MvtOC2M206i+JJ6VxFWU/NetrGY= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= +github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= @@ -301,10 +298,8 @@ github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= -github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= -github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= +github.com/containers/image/v5 v5.24.1 h1:XaRw3FJmvZtI297uBVTJluUVH4AQJ//YpHviaOw0C4M= +github.com/containers/image/v5 v5.24.1/go.mod h1:oss5F6ssGQz8ZtC79oY+fuzYA3m3zBek9tq9gmhuvHc= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U= @@ -326,7 +321,6 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -378,6 +372,7 @@ github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nG github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= @@ -703,7 +698,6 @@ github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2J github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -764,8 +758,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= @@ -1010,8 +1004,6 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1610,8 +1602,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= +gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From b2ae823bf97c4351a9fa26d5317e2ad76211ad2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 11:00:35 +0800 Subject: [PATCH 143/355] chore(deps): bump crate-ci/typos from 1.14.11 to 1.14.12 (#1630) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.11 to 1.14.12. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.11...v1.14.12) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 94d2d7adb..0e83cf542 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.11 + uses: crate-ci/typos@v1.14.12 with: config: ./typos.toml lint: From ef97732a6a0258ed104ffb3fc99fcb1036762257 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:07:32 +0800 Subject: [PATCH 144/355] chore(deps): bump github.com/urfave/cli/v2 from 2.25.4 to 2.25.5 (#1635) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.4 to 2.25.5. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.4...v2.25.5) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 777549b62..6b64291f1 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.25.4 + github.com/urfave/cli/v2 v2.25.5 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.9.0 golang.org/x/sync v0.2.0 diff --git a/go.sum b/go.sum index cc430b77a..0a7739a74 100644 --- a/go.sum +++ b/go.sum @@ -915,8 +915,8 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= -github.com/urfave/cli/v2 v2.25.4 h1:HyYwPrTO3im9rYhUff/ZNs78eolxt0nJ4LN+9yJKSH4= -github.com/urfave/cli/v2 v2.25.4/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.5 h1:d0NIAyhh5shGscroL7ek/Ya9QYQE0KNabJgiUinIQkc= +github.com/urfave/cli/v2 v2.25.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 9cdc234638b72a161bd004338671cf91355acdce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:07:50 +0800 Subject: [PATCH 145/355] chore(deps): bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 (#1634) Bumps [github.com/sirupsen/logrus](https://github.com/sirupsen/logrus) from 1.9.2 to 1.9.3. - [Release notes](https://github.com/sirupsen/logrus/releases) - [Changelog](https://github.com/sirupsen/logrus/blob/master/CHANGELOG.md) - [Commits](https://github.com/sirupsen/logrus/compare/v1.9.2...v1.9.3) --- updated-dependencies: - dependency-name: github.com/sirupsen/logrus dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6b64291f1..7dc639c7f 100644 --- a/go.mod +++ b/go.mod @@ -35,7 +35,7 @@ require ( github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.1 github.com/segmentio/analytics-go/v3 v3.2.1 - github.com/sirupsen/logrus v1.9.2 + github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.3 github.com/syncthing/syncthing v1.23.4 diff --git a/go.sum b/go.sum index 0a7739a74..f04426735 100644 --- a/go.sum +++ b/go.sum @@ -841,8 +841,8 @@ github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrf github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= -github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= From 70b8b60af45704f3de3165462d844ba283a68d3c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Jun 2023 12:13:33 +0800 Subject: [PATCH 146/355] chore(deps): bump github.com/containerd/containerd from 1.6.19 to 1.7.2 (#1633) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.6.19 to 1.7.2. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.6.19...v1.7.2) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 9 ++++++--- go.sum | 25 ++++++++++++++++--------- 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index 7dc639c7f..80b5500aa 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 - github.com/containerd/containerd v1.6.19 + github.com/containerd/containerd v1.7.2 github.com/containers/image/v5 v5.24.1 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.1+incompatible @@ -30,7 +30,7 @@ require ( github.com/onsi/ginkgo/v2 v2.9.5 github.com/onsi/gomega v1.27.7 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc2 + github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.5 github.com/schollz/progressbar/v3 v3.13.1 @@ -56,6 +56,7 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v0.12.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect @@ -68,13 +69,15 @@ require ( github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect github.com/cockroachdb/redact v1.1.3 // indirect - github.com/containerd/continuity v0.3.0 // indirect + github.com/containerd/continuity v0.4.1 // indirect github.com/containerd/ttrpc v1.2.2 // indirect github.com/containerd/typeurl v1.0.2 // indirect + github.com/containerd/typeurl/v2 v2.1.1 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.1.7 // indirect github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cyphar/filepath-securejoin v0.2.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect diff --git a/go.sum b/go.sum index f04426735..350d7da1e 100644 --- a/go.sum +++ b/go.sum @@ -190,6 +190,9 @@ cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuW cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= @@ -207,7 +210,7 @@ github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugX github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.9.8 h1:lf7xxK2+Ikbj9sVf2QZsouGjRjEp2STj1yDHgoVtU5k= +github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= @@ -272,7 +275,7 @@ github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5w github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.0.4 h1:jN/mbWBEaz+T1pi5OFtnkQ+8qnmEbAr1Oo1FRm5B0dA= +github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= @@ -280,14 +283,14 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.6.19 h1:F0qgQPrG0P2JPgwpxWxYavrVeXAG0ezUIB9Z/4FTUAU= -github.com/containerd/containerd v1.6.19/go.mod h1:HZCDMn4v/Xl2579/MvtOC2M206i+JJ6VxFWU/NetrGY= +github.com/containerd/containerd v1.7.2 h1:UF2gdONnxO8I6byZXDi5sXWiWvlW3D/sci7dTQimEJo= +github.com/containerd/containerd v1.7.2/go.mod h1:afcz74+K10M/+cjGHIVQrCt3RAQhUSCAjJ9iMYhhkuI= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= -github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= -github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/containerd/continuity v0.4.1 h1:wQnVrjIyQ8vhU2sgOiL5T07jo+ouqc2bnKsv5/EqGhU= +github.com/containerd/continuity v0.4.1/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v1.0.0 h1:6PirWBr9/L7GDamKr+XM0IeUFXu5mf3M/BPpH9gaLBU= +github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= @@ -298,6 +301,8 @@ github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= +github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/containers/image/v5 v5.24.1 h1:XaRw3FJmvZtI297uBVTJluUVH4AQJ//YpHviaOw0C4M= github.com/containers/image/v5 v5.24.1/go.mod h1:oss5F6ssGQz8ZtC79oY+fuzYA3m3zBek9tq9gmhuvHc= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= @@ -321,6 +326,7 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= +github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -698,6 +704,7 @@ github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2J github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= +github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -758,8 +765,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= -github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= +github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= From 1af61d3777c5c19652643411c87c068831899e01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Jun 2023 10:08:04 +0800 Subject: [PATCH 147/355] chore(deps): bump github.com/syncthing/syncthing from 1.23.4 to 1.23.5 (#1637) Bumps [github.com/syncthing/syncthing](https://github.com/syncthing/syncthing) from 1.23.4 to 1.23.5. - [Release notes](https://github.com/syncthing/syncthing/releases) - [Commits](https://github.com/syncthing/syncthing/compare/v1.23.4...v1.23.5) --- updated-dependencies: - dependency-name: github.com/syncthing/syncthing dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 19 ++++++++++--------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 80b5500aa..dfa6874d1 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.15.0 github.com/stretchr/testify v1.8.3 - github.com/syncthing/syncthing v1.23.4 + github.com/syncthing/syncthing v1.23.5 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f @@ -98,7 +98,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.5.9 // indirect - github.com/google/pprof v0.0.0-20230309165930-d61513b1440d // indirect + github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect github.com/googleapis/gax-go/v2 v2.7.0 // indirect @@ -150,7 +150,7 @@ require ( github.com/opencontainers/runc v1.1.5 // indirect github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect github.com/pelletier/go-toml/v2 v2.0.6 // indirect - github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 // indirect + github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect @@ -160,7 +160,7 @@ require ( github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/shirou/gopsutil/v3 v3.23.2 // indirect + github.com/shirou/gopsutil/v3 v3.23.3 // indirect github.com/spf13/afero v1.9.3 // indirect github.com/spf13/cast v1.5.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect diff --git a/go.sum b/go.sum index 350d7da1e..6982070ec 100644 --- a/go.sum +++ b/go.sum @@ -517,8 +517,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230309165930-d61513b1440d h1:um9/pc7tKMINFfP1eE7Wv6PRGXlcCSJkVajF7KJw3uQ= -github.com/google/pprof v0.0.0-20230309165930-d61513b1440d/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= +github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -786,8 +786,8 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50 h1:mDrFjGWmndQXmVx3giRScTbkltpPcnGEWG1GorsuiJ4= -github.com/petermattis/goid v0.0.0-20230222173705-8ff7bb262a50/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= +github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -839,8 +839,10 @@ github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAm github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= -github.com/shirou/gopsutil/v3 v3.23.2 h1:PAWSuiAszn7IhPMBtXsbSCafej7PqUOvY6YywlQUExU= -github.com/shirou/gopsutil/v3 v3.23.2/go.mod h1:gv0aQw33GLo3pG8SiWKiQrbDzbRY1K80RyZJ7V4Th1M= +github.com/shirou/gopsutil/v3 v3.23.3 h1:Syt5vVZXUDXPEXpIBt5ziWsJ4LdSAAxF4l/xZeQgSEE= +github.com/shirou/gopsutil/v3 v3.23.3/go.mod h1:lSBNN6t3+D6W5e5nXTxc8KIMMVxAcS+6IJlffjRRlMU= +github.com/shoenig/go-m1cpu v0.1.4/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= +github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -894,8 +896,8 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= -github.com/syncthing/syncthing v1.23.4 h1:6N1Y9z5GseLDu7Jd6s5Ddybs3jwbnVzp41hGpXTwMhw= -github.com/syncthing/syncthing v1.23.4/go.mod h1:ubSuNWEUtrWsEoOEG8E3jiGQzVXPPD+qynZSTA3dqyg= +github.com/syncthing/syncthing v1.23.5 h1:ARmzVJrnqc64ls//aOy2giNJLWQc+xCgoAaHo1Gqz6s= +github.com/syncthing/syncthing v1.23.5/go.mod h1:am4ZwC/vahEQ1dLflqB0urA0FY5/ms0bwtqvxh5GIy0= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= @@ -1248,7 +1250,6 @@ golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From edf21bfbe8bfd19f6cdb6be505c0dee0dc851570 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 8 Jun 2023 14:22:57 +0800 Subject: [PATCH 148/355] fix: authentication for private base image (#1639) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 2 +- go.sum | 4 ++-- pkg/app/app.go | 2 +- pkg/lang/ir/v1/system.go | 17 ++++++++--------- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index dfa6874d1..8340e876d 100644 --- a/go.mod +++ b/go.mod @@ -23,7 +23,7 @@ require ( github.com/google/uuid v1.3.0 github.com/hashicorp/go-getter v1.7.1 github.com/mattn/go-isatty v0.0.19 - github.com/moby/buildkit v0.11.4 + github.com/moby/buildkit v0.11.6 github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 diff --git a/go.sum b/go.sum index 6982070ec..8d8a7bdf5 100644 --- a/go.sum +++ b/go.sum @@ -692,8 +692,8 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZX github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.11.4 h1:mleVHr+n7HUD65QNUkgkT3d8muTzhYUoHE9FM3Ej05s= -github.com/moby/buildkit v0.11.4/go.mod h1:P5Qi041LvCfhkfYBHry+Rwoo3Wi6H971J2ggE+PcIoo= +github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs= +github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= diff --git a/pkg/app/app.go b/pkg/app/app.go index 49374cc77..95b9f4509 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -61,7 +61,7 @@ func New() EnvdApp { &cli.StringFlag{ Name: flag.FlagBuildkitdImage, Usage: "docker image to use for buildkitd", - Value: "docker.io/moby/buildkit:v0.10.3", + Value: "docker.io/moby/buildkit:v0.10.6", Hidden: true, }, &cli.StringFlag{ diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 1576309b4..81df67b5d 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -24,7 +24,6 @@ import ( "github.com/cockroachdb/errors" "github.com/moby/buildkit/client/llb" - "github.com/moby/buildkit/client/llb/imagemetaresolver" "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/config" @@ -332,14 +331,19 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { // Fix https://github.com/tensorchord/envd/issues/1147. // Fetch the image metadata from base image. - base := llb.Image(g.Image, llb.WithMetaResolver(imagemetaresolver.Default())) - envs, err := base.Env(context.Background()) + base := llb.Image(g.Image) + // fetching the image config may take some time + config, err := ir.FetchImageConfig(context.Background(), g.Image, g.Platform) + if err != nil { + return llb.State{}, err + } if err != nil { return llb.State{}, errors.Wrap(err, "failed to get the image metadata") } // Set the environment variables to RuntimeEnviron to keep it in the resulting image. - for _, e := range envs { + logger.Logger.Debugf("inherit envs from base image: %s", config.Env) + for _, e := range config.Env { // in case the env value also contains `=` kv := strings.SplitN(e, "=", 2) g.RuntimeEnviron[kv[0]] = kv[1] @@ -354,11 +358,6 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { } if !g.Dev { - // fetching the image config may take some time - config, err := ir.FetchImageConfig(context.Background(), g.Image, g.Platform) - if err != nil { - return llb.State{}, err - } if len(g.Entrypoint) == 0 { g.Entrypoint = config.Entrypoint } From b29558249b063473d9cc401801d6a0ea92e3f5ae Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 8 Jun 2023 14:46:29 +0800 Subject: [PATCH 149/355] docs: updated CHANGELOG.md (#1640) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93b94e6c4..0a49c0ad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## v0.3.24 (2023-06-08) + + * [edf21bf](https://github.com/tensorchord/envd/commit/edf21bfbe8bfd19f6cdb6be505c0dee0dc851570) fix: authentication for private base image (#1639) + * [1af61d3](https://github.com/tensorchord/envd/commit/1af61d3777c5c19652643411c87c068831899e01) chore(deps): bump github.com/syncthing/syncthing from 1.23.4 to 1.23.5 (#1637) + * [70b8b60](https://github.com/tensorchord/envd/commit/70b8b60af45704f3de3165462d844ba283a68d3c) chore(deps): bump github.com/containerd/containerd from 1.6.19 to 1.7.2 (#1633) + * [9cdc234](https://github.com/tensorchord/envd/commit/9cdc234638b72a161bd004338671cf91355acdce) chore(deps): bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 (#1634) + * [ef97732](https://github.com/tensorchord/envd/commit/ef97732a6a0258ed104ffb3fc99fcb1036762257) chore(deps): bump github.com/urfave/cli/v2 from 2.25.4 to 2.25.5 (#1635) + * [b2ae823](https://github.com/tensorchord/envd/commit/b2ae823bf97c4351a9fa26d5317e2ad76211ad2d) chore(deps): bump crate-ci/typos from 1.14.11 to 1.14.12 (#1630) + * [7d6f107](https://github.com/tensorchord/envd/commit/7d6f107aa2a65572b549169fe92a8f992d592f4c) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 (#1625) + * [67f0962](https://github.com/tensorchord/envd/commit/67f096235fc580542bda91fa5207374277c4b912) chore(deps): bump github.com/charmbracelet/bubbletea from 0.24.0 to 0.24.1 (#1627) + * [2f37763](https://github.com/tensorchord/envd/commit/2f37763851fc918707589be335758348eb95dd0b) chore(deps): bump github.com/onsi/gomega from 1.27.6 to 1.27.7 (#1626) + * [637b1f2](https://github.com/tensorchord/envd/commit/637b1f2447dc21155b5038ea7001658f5db064ed) chore(deps): bump github.com/urfave/cli/v2 from 2.25.3 to 2.25.4 (#1624) + * [886c1f5](https://github.com/tensorchord/envd/commit/886c1f5c5299251f6fb218df291a676bdade502b) chore(deps): bump pypa/cibuildwheel from 2.12.3 to 2.13.0 (#1621) + * [c7dc7f9](https://github.com/tensorchord/envd/commit/c7dc7f945e096c54a1b30b23e197fed94ad6eda7) chore(deps): bump dependabot/fetch-metadata from 1.4.0 to 1.5.1 (#1622) + * [fa5e457](https://github.com/tensorchord/envd/commit/fa5e457a785b95e5453be51fa5bf01c780f21bfd) chore(deps): bump crate-ci/typos from 1.14.10 to 1.14.11 (#1623) + +### Contributors + + * Keming + * dependabot[bot] + ## v0.3.23 (2023-05-25) * [8a175ed](https://github.com/tensorchord/envd/commit/8a175ed71d59859f57592ddbe73203c4dd8dd6c5) feat: create dest path in io.copy (#1619) From 8667b1100b9ca6a1bf05f91fbf4d7684f10fdbf4 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 9 Jun 2023 09:10:44 +0800 Subject: [PATCH 150/355] docs: update the cuda docstring (#1641) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- envd/api/v1/__init__.py | 2 +- envd/api/v1/install.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/envd/api/v1/__init__.py b/envd/api/v1/__init__.py index e30ac5c84..302cb0e77 100644 --- a/envd/api/v1/__init__.py +++ b/envd/api/v1/__init__.py @@ -43,7 +43,7 @@ def base(image: str = "ubuntu:20.04", dev: bool = False): """ -def shell(name: str = "base"): +def shell(name: str = "bash"): """Interactive shell Args: diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index c3433d595..4001f031c 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -114,7 +114,10 @@ def vscode_extensions(name: List[str]): def cuda(version: str, cudnn: Optional[str] = "8"): - """Install CUDA dependency + """Replace the base image with a `nvidia/cuda` image. + + If you want to install CUDA on your custom base image, you can use + `install.apt_packages` or `run` to install the CUDA toolkit. Args: version (str): CUDA version, such as '11.6.2' From 1f9aaf4edcd1ec49dc5bfd76dbdd8307f59f1ffc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:11:33 +0800 Subject: [PATCH 151/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.5 to 2.10.0 (#1646) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.9.5 to 2.10.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.9.5...v2.10.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 8340e876d..11a1f77f6 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.9.5 + github.com/onsi/ginkgo/v2 v2.10.0 github.com/onsi/gomega v1.27.7 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b @@ -189,7 +189,7 @@ require ( golang.org/x/oauth2 v0.6.0 // indirect golang.org/x/sys v0.8.0 // indirect golang.org/x/text v0.9.0 // indirect - golang.org/x/tools v0.9.1 // indirect + golang.org/x/tools v0.9.3 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.110.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index 8d8a7bdf5..acacbc0c8 100644 --- a/go.sum +++ b/go.sum @@ -750,8 +750,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.9.5 h1:+6Hr4uxzP4XIUyAkg61dWBw8lb/gc4/X5luuxN/EC+Q= -github.com/onsi/ginkgo/v2 v2.9.5/go.mod h1:tvAoo1QUJwNEU2ITftXTpR7R1RbCzoZUOs3RonqW57k= +github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs= +github.com/onsi/ginkgo/v2 v2.10.0/go.mod h1:UDQOh5wbQUlMnkLfVaIUMtQ1Vus92oM+P2JX1aulgcE= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -1340,8 +1340,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.9.1 h1:8WMNJAz3zrtPmnYC7ISf5dEn3MT0gY7jBJfw27yrrLo= -golang.org/x/tools v0.9.1/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= +golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From cb10df940d38a20b7ddd0eaf2311b962aee9ab9a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:14:55 +0800 Subject: [PATCH 152/355] chore(deps): bump pypa/cibuildwheel from 2.13.0 to 2.13.1 (#1644) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.13.0 to 2.13.1. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.13.0...v2.13.1) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a32c015b1..6be918529 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.13.0 + uses: pypa/cibuildwheel@v2.13.1 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 7e0ab3789f1b91d3d60a2b9b495d3e3c2bbce4dd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:30:15 +0800 Subject: [PATCH 153/355] chore(deps): bump github.com/containers/image/v5 from 5.24.1 to 5.25.0 (#1648) Bumps [github.com/containers/image/v5](https://github.com/containers/image) from 5.24.1 to 5.25.0. - [Release notes](https://github.com/containers/image/releases) - [Commits](https://github.com/containers/image/compare/v5.24.1...v5.25.0) --- updated-dependencies: - dependency-name: github.com/containers/image/v5 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 5 ++--- go.sum | 9 +++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go.mod b/go.mod index 11a1f77f6..5abc50c7f 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 github.com/containerd/containerd v1.7.2 - github.com/containers/image/v5 v5.24.1 + github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.1+incompatible github.com/docker/docker v23.0.3+incompatible @@ -84,7 +84,6 @@ require ( github.com/emirpasic/gods v1.12.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.12.0 // indirect - github.com/ghodss/yaml v1.0.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.4 // indirect @@ -184,6 +183,7 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect + golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect @@ -198,7 +198,6 @@ require ( google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index acacbc0c8..88cedf874 100644 --- a/go.sum +++ b/go.sum @@ -303,8 +303,8 @@ github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= -github.com/containers/image/v5 v5.24.1 h1:XaRw3FJmvZtI297uBVTJluUVH4AQJ//YpHviaOw0C4M= -github.com/containers/image/v5 v5.24.1/go.mod h1:oss5F6ssGQz8ZtC79oY+fuzYA3m3zBek9tq9gmhuvHc= +github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= +github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U= @@ -378,7 +378,6 @@ github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nG github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= @@ -1013,6 +1012,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= +golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1610,8 +1611,8 @@ gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3 h1:4AuOwCGf4lLR9u3YOe2awrHygurzhO/HeQ6laiA6Sx0= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= +gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 170ca4d73d85a4aee0da69625e6d229aaeb2fe87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:31:20 +0800 Subject: [PATCH 154/355] chore(deps): bump github.com/charmbracelet/bubbletea from 0.24.1 to 0.24.2 (#1645) chore(deps): bump github.com/charmbracelet/bubbletea Bumps [github.com/charmbracelet/bubbletea](https://github.com/charmbracelet/bubbletea) from 0.24.1 to 0.24.2. - [Release notes](https://github.com/charmbracelet/bubbletea/releases) - [Commits](https://github.com/charmbracelet/bubbletea/compare/v0.24.1...v0.24.2) --- updated-dependencies: - dependency-name: github.com/charmbracelet/bubbletea dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5abc50c7f..84829b743 100644 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 - github.com/charmbracelet/bubbletea v0.24.1 + github.com/charmbracelet/bubbletea v0.24.2 github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.9.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 diff --git a/go.sum b/go.sum index 88cedf874..8348e8ecb 100644 --- a/go.sum +++ b/go.sum @@ -243,8 +243,8 @@ github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/bubbletea v0.24.1 h1:LpdYfnu+Qc6XtvMz6d/6rRY71yttHTP5HtrjMgWvixc= -github.com/charmbracelet/bubbletea v0.24.1/go.mod h1:rK3g/2+T8vOSEkNHvtq40umJpeVYDn6bLaqbgzhL/hg= +github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= +github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= From b233d204bdaed4a2f8544b11c858611d45f6f427 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Jun 2023 11:31:50 +0800 Subject: [PATCH 155/355] chore(deps): bump crate-ci/typos from 1.14.12 to 1.15.0 (#1643) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.14.12 to 1.15.0. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.14.12...v1.15.0) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0e83cf542..ecea686b1 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.14.12 + uses: crate-ci/typos@v1.15.0 with: config: ./typos.toml lint: From dc2781cd02feef07434895cb7a4f5cd78831adbf Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 12 Jun 2023 11:44:54 +0800 Subject: [PATCH 156/355] chore: fix typos config (#1649) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- docs/images/after.svg | 3 --- docs/images/before.svg | 3 --- docs/images/envd.png | Bin 171913 -> 0 bytes typos.toml | 1 + 4 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 docs/images/after.svg delete mode 100644 docs/images/before.svg delete mode 100644 docs/images/envd.png diff --git a/docs/images/after.svg b/docs/images/after.svg deleted file mode 100644 index f53ddb822..000000000 --- a/docs/images/after.svg +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="705px" height="410px" viewBox="-0.5 -0.5 705 410"><defs/><g><path d="M 108 52 Q 145.5 52 145.5 52.5 Q 145.5 53 172.9 53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 179.65 53 L 170.65 57.5 L 172.9 53 L 170.65 48.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><image x="39.5" y="0.5" width="68" height="68" xlink:href="data:image/png;base64,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" preserveAspectRatio="none"/><rect x="0" y="79" width="146" height="57" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 144px; height: 1px; padding-top: 108px; margin-left: 1px;"><div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#0a0a0a">Data Scientists</font></div></div></div></foreignObject><text x="73" y="114" fill="#FFFFFF" font-family="Helvetica" font-size="22px" text-anchor="middle">Data Scientists...</text></switch></g><ellipse cx="651" cy="53" rx="52" ry="52" fill="#cce5ff" stroke="#36393d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 102px; height: 1px; padding-top: 53px; margin-left: 600px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Deliver</div></div></div></foreignObject><text x="651" y="60" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">Deliver</text></switch></g><path d="M 313 53 Q 313 53 368.9 53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 375.65 53 L 366.65 57.5 L 368.9 53 L 366.65 48.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="183" y="23" width="130" height="60" fill="#cdeb8b" stroke="#36393d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 53px; margin-left: 184px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">write build.envd</div></div></div></foreignObject><text x="248" y="60" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">write build....</text></switch></g><path d="M 509 53 Q 509 53 588.9 53" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 595.65 53 L 586.65 57.5 L 588.9 53 L 586.65 48.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="379" y="23" width="130" height="60" fill="#cdeb8b" stroke="#36393d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 53px; margin-left: 380px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">envd up and develop</div></div></div></foreignObject><text x="444" y="60" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">envd up and...</text></switch></g><rect x="80" y="189" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 219px; margin-left: 81px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div>git clone</div></div></div></div></foreignObject><text x="145" y="226" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">git clone</text></switch></g><rect x="240" y="159" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 189px; margin-left: 241px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">configure tools</div></div></div></foreignObject><text x="305" y="196" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">configure to...</text></switch></g><rect x="134" y="209" width="180" height="64" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 241px; margin-left: 135px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">build and install system deps</div></div></div></foreignObject><text x="224" y="248" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">build and instal...</text></switch></g><rect x="360" y="169" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 199px; margin-left: 361px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">update python deps</div></div></div></foreignObject><text x="425" y="206" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">update pytho...</text></switch></g><rect x="314" y="213" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 243px; margin-left: 315px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">debug datasets</div></div></div></foreignObject><text x="379" y="250" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">debug datase...</text></switch></g><rect x="230" y="249" width="170" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 279px; margin-left: 231px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">configure model storage</div></div></div></foreignObject><text x="315" y="286" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">configure model...</text></switch></g><rect x="420" y="189" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 219px; margin-left: 421px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">trial and error</div></div></div></foreignObject><text x="485" y="226" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">trial and er...</text></switch></g><rect x="444" y="149" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 179px; margin-left: 445px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">git push</div></div></div></foreignObject><text x="509" y="186" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">git push</text></switch></g><rect x="470" y="229" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 259px; margin-left: 471px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><div>git clone</div></div></div></div></foreignObject><text x="535" y="266" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">git clone</text></switch></g><rect x="480" y="189" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 219px; margin-left: 481px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">write dockefiles</div></div></div></foreignObject><text x="545" y="226" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">write dockef...</text></switch></g><rect x="200" y="279" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 309px; margin-left: 201px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">pipeline the data</div></div></div></foreignObject><text x="265" y="316" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">pipeline the...</text></switch></g><rect x="460" y="159" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 189px; margin-left: 461px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">training</div></div></div></foreignObject><text x="525" y="196" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">training</text></switch></g><rect x="370" y="259" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 289px; margin-left: 371px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">save model</div></div></div></foreignObject><text x="435" y="296" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">save model</text></switch></g><image x="262.5" y="118.5" width="232" height="232" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAABYNJREFUeF7t3btu1EAYhuEvVdKkgSaXAffAKWUkuM4gKNJwByDlNlIhyiRQoBFrsXFsf2N7Dv8pFRL2rD3v4/FmSfAJ4sv1DJy4Pvs4eQQA5wiWAFwCuANw63yOtJ/+awAXAG6mTmQOwAcA1wDuAbwD8F37LDg9/lcAvgE4B/AJwJfxPEwBGOKfHTb+FQhU8hnivzwc/eMUgjGAtOynK/90dMo/AbyJ24EaCGnZT1f+i9ERPwC4Or4djAGM1RzvHyuBjv6s4VsAP4ZTmboFsAHiPYFcCKzdk/jpNObeBLKBAoE8BKzZs/hLANLfsQEDgRwErNVkfAYgEMgJvHQkm+PnAAgEshHsip8LIBDIRLA7/hoAgUAWgiLx1wIIBDIQFIu/BUAg6IugaPytAAJBHwTF4+8BEAjaIqgSfy+AQNAGQbX4JQAEgroIqsYvBSAQ1EFQPX5JAIGgLIIm8UsDCARlEDSLXwNAINiHoGn8WgACwTYEzePXBBAI1iHoEr82gECQh6Bb/BYAAsEygq7xWwEIBNMIusdvCSAQPEUgIn5rAIHgHwIx8XsAyJkAyz9tLCp+LwBeEYiL3xOANwQi4/cG4AWB2PgSAFhHIDq+FABWEYiPLwmANQQq4ksDYAWBmvgSAWhHoCq+VABaEaiLLxmANgQq40sHoAWB2vgaAEhHoDq+FgBSEaiPrwmANAQm4msDIAWBmfgaAfRGYCq+VgC9EJiLrxlAawQm42sH0AqB2fgWANRGYDq+FQC1EJiPbwlAaQQu4lsDUAqBm/gWAexF4Cq+VQBbEbiLbxnAWgQu41sHkIvg9+EBS8PTtdJ+w1d6TtLswxaON9T6Zw9PDp17glZqlp6Glr7GT9ca/s78k9I8AGArwdTFa/7KH07aC4A1CNzE9/AeYHx1L73ZS9u6ih8Ani/+7h6OGbcA5wi8AGBL/5iBm5XAA4D4NnDhQwrrAHI+4ftDPgiy/H8WzT47WOsHW8fHnRN/eIo229YsAqsrAAs69fEu28ckAosAWMilz/bZvuYQWAPAAub8ww4bwxQCSwBYuJz4w3sINpYZBFYAsGBr4rtCYAFAjfhuEGgHUDO+CwSaAbSIbx6BVgAt45tGoBFAj/hmEWgD0DO+SQSaAEiIbw6BFgCS4ptCoAGAxPhmEEgHIDm+CQSSAWiIrx6BVACa4qtGIBGAxvhqEUgDoDm+SgSSAFiIrw6BFACW4qtCIAGAxfhqEPQGYDm+CgQ9AXiILx5BLwCe4otG0AOAx/hiEbQG4Dm+SAQtAUT8/7+5yOai2e8dtALATnjLz+1r/wVWNidNELQAwE7UY3wxt4PaACI+X6fYHFVdCWoCYCfm+cofs2BzVQ1BLQDshCL+85WBzVkVBDUAsBOJ+PO3BTZ3xRGUBsBOIOILe09QEkDE53Fzt2BzWWwlKAWAHXBc+bnpG39YVAJAxF8fN3cPNre7V4K9ANgBxpWfm7rTG8M9ACL+/ri5I7C53rwSbAXADiiu/Ny0+duxOd+EYAsAdiARPz/q2i3Z3K9GsBYAO4CIvzbp+u1Zg1UI1gBgLxzx18fcugdrkY0gFwB7wYi/NeX2/ViTLAQ5ANgLRfztEffuydpQBAwAe4GIvzfh/v1Zo0UESwDYwBF/f7xSI7BWswjmALABI36pdOXGYc0mEUwBYANF/HLRSo/E2j1DMAbABoj4pZOVH481fIJgDOASwDWA09FxpYcsm3+QcvkW3Uace1LaA4ArADfDkU3dAt4D+Azg7LCRu8epdstW9oXHK8EjgI8Avh6/zNybwAHBPYBY9suGaTnagOB8Kn46kKVvA9Pt4A7AbcsjjtcqPgPpdnBxvOznrADFjyIGlDkD7JNAmUcdR1VsBgJAsanUOdBf59G+n5kqRBoAAAAASUVORK5CYII=" preserveAspectRatio="none" pointer-events="none"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> diff --git a/docs/images/before.svg b/docs/images/before.svg deleted file mode 100644 index f82d5d099..000000000 --- a/docs/images/before.svg +++ /dev/null @@ -1,3 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="892px" height="498px" viewBox="-0.5 -0.5 892 498"><defs/><g><path d="M 108 207 Q 150 207 150 224 Q 150 241 165 241 Q 180 241 180 266 Q 180 291 217.5 291 Q 255 291 255 247.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 255 240.35 L 259.5 249.35 L 255 247.1 L 250.5 249.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><image x="39.5" y="172.5" width="68" height="68" xlink:href="data:image/png;base64,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" preserveAspectRatio="none"/><path d="M 255 177 Q 255 149 311.25 149 Q 367.5 149 367.5 131.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 367.5 124.35 L 372 133.35 L 367.5 131.1 L 363 133.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 400 106 Q 450 106 450 148.5 Q 450 191 415 191 Q 380 191 380 210.9" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 380 217.65 L 375.5 208.65 L 380 210.9 L 384.5 208.65 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 450 221 Q 440 221 450 221 Q 460 221 460 176 Q 460 131 512.5 131 Q 565 131 565 71.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 565 64.35 L 569.5 73.35 L 565 71.1 L 560.5 73.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="360" y="221" width="180" height="70" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 256px; margin-left: 361px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">build and install system deps</div></div></div></foreignObject><text x="450" y="263" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">build and instal...</text></switch></g><path d="M 565 61 Q 565 96 585 96 Q 605 96 605 120.9" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 605 127.65 L 600.5 118.65 L 605 120.9 L 609.5 118.65 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="500" y="1" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 31px; margin-left: 501px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">update python deps</div></div></div></foreignObject><text x="565" y="38" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">update pytho...</text></switch></g><path d="M 605 191 Q 605 221 607.55 221 Q 610.1 221 610.07 238.38" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 610.06 245.13 L 605.58 236.12 L 610.07 238.38 L 614.58 236.13 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="540" y="131" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 161px; margin-left: 541px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">debug datasets</div></div></div></foreignObject><text x="605" y="168" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">debug datase...</text></switch></g><path d="M 632.5 311 Q 632.5 343.5 655 343.5 Q 677.5 343.5 677.5 365.9" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 677.5 372.65 L 673 363.65 L 677.5 365.9 L 682 363.65 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 320 363 Q 355 363 355 354.5 Q 355 346 379.9 346" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 386.65 346 L 377.65 350.5 L 379.9 346 L 377.65 341.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 230 308 Q 230 31 489.9 31" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 496.65 31 L 487.65 35.5 L 489.9 31 L 487.65 26.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="140" y="308" width="180" height="110" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 363px; margin-left: 141px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">trial and error</div></div></div></foreignObject><text x="230" y="370" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">trial and error</text></switch></g><rect x="0" y="251" width="146" height="57" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 144px; height: 1px; padding-top: 280px; margin-left: 1px;"><div data-drawio-colors="color: #FFFFFF; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(255, 255, 255); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><font color="#0a0a0a">Data Scientists</font></div></div></div></foreignObject><text x="73" y="286" fill="#FFFFFF" font-family="Helvetica" font-size="22px" text-anchor="middle">Data Scientists...</text></switch></g><path d="M 520 346 Q 550 346 550 376 Q 550 406 569.9 406" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 576.65 406 L 567.65 410.5 L 569.9 406 L 567.65 401.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="390" y="316" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 346px; margin-left: 391px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">write dockefiles</div></div></div></foreignObject><text x="455" y="353" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">write dockef...</text></switch></g><path d="M 580 406 Q 530 406 530 436 Q 530 466 490.1 466" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 483.35 466 L 492.35 461.5 L 490.1 466 L 492.35 470.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 480 481 Q 825 481 825 401.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 825 394.35 L 829.5 403.35 L 825 401.1 L 820.5 403.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><path d="M 350 451 Q 230 451 230 428.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 230 421.35 L 234.5 430.35 L 230 428.1 L 225.5 430.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="350" y="436" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 466px; margin-left: 351px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">training</div></div></div></foreignObject><text x="415" y="473" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">training</text></switch></g><path d="M 825 331 Q 825 311 825 313 Q 825 315 825 305.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 825 298.35 L 829.5 307.35 L 825 305.1 L 820.5 307.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="760" y="331" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 361px; margin-left: 761px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">save model</div></div></div></foreignObject><text x="825" y="368" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">save model</text></switch></g><ellipse cx="825" cy="243" rx="52" ry="52" fill="#cce5ff" stroke="#36393d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 102px; height: 1px; padding-top: 243px; margin-left: 774px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Deliver</div></div></div></foreignObject><text x="825" y="250" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">Deliver</text></switch></g><rect x="190" y="177" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 207px; margin-left: 191px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>git clone</div></div></div></div></foreignObject><text x="255" y="214" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">git clone</text></switch></g><rect x="270" y="61" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 91px; margin-left: 271px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">configure tools</div></div></div></foreignObject><text x="335" y="98" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">configure to...</text></switch></g><path d="M 710 406 Q 730 406 730 344.75 Q 730 283.5 683.75 283.5 Q 637.5 283.5 637.5 201.1" fill="none" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" stroke-dasharray="9 9" pointer-events="stroke"/><path d="M 637.5 194.35 L 642 203.35 L 637.5 201.1 L 633 203.35 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="3" stroke-miterlimit="10" pointer-events="all"/><rect x="580" y="376" width="130" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 406px; margin-left: 581px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">pipeline the data</div></div></div></foreignObject><text x="645" y="413" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">pipeline the...</text></switch></g><rect x="590" y="251" width="170" height="60" fill="#bac8d3" stroke="#23445d" stroke-width="3" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 168px; height: 1px; padding-top: 281px; margin-left: 591px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 22px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">configure model storage</div></div></div></foreignObject><text x="675" y="288" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="22px" text-anchor="middle">configure model...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg> diff --git a/docs/images/envd.png b/docs/images/envd.png deleted file mode 100644 index b61c87462ea67e0fa15e81133782b2f0a23b646b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171913 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%0Dge8TiPQUixOG~wxz7}6vD2XaGN23h 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 I^H(1K58nV$PXGV_ diff --git a/typos.toml b/typos.toml index 7ca451009..9fb7e0e4e 100644 --- a/typos.toml +++ b/typos.toml @@ -3,3 +3,4 @@ extend-exclude = ["CHANGELOG.md"] [default.extend-words] iterm = "iterm" +WRONLY = "WRONLY" From 580c5e7e573c77462fa574693485411508625b6f Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 13 Jun 2023 17:41:45 +0800 Subject: [PATCH 157/355] chore: make the cuda err msg more informative (#1650) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/system.go | 2 +- pkg/lang/ir/v1/util.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 81df67b5d..baf31043f 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -335,7 +335,7 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { // fetching the image config may take some time config, err := ir.FetchImageConfig(context.Background(), g.Image, g.Platform) if err != nil { - return llb.State{}, err + return llb.State{}, errors.Wrapf(err, "failed to get the image config, check if the image(%s) exists", g.Image) } if err != nil { return llb.State{}, errors.Wrap(err, "failed to get the image metadata") diff --git a/pkg/lang/ir/v1/util.go b/pkg/lang/ir/v1/util.go index 83d21dfc7..77cb953be 100644 --- a/pkg/lang/ir/v1/util.go +++ b/pkg/lang/ir/v1/util.go @@ -143,7 +143,11 @@ func GetCUDAImage(image string, cuda *string, cudnn string, dev bool) string { } imageTag := strings.Replace(image, ":", "", 1) - return fmt.Sprintf("docker.io/nvidia/cuda:%s-cudnn%s-%s-%s", *cuda, cudnn, target, imageTag) + newImage := fmt.Sprintf("docker.io/nvidia/cuda:%s-cudnn%s-%s-%s", *cuda, cudnn, target, imageTag) + if image != defaultImage { + logrus.Warnf("CUDA is only tested for %s, it might work with Ubuntu 18/22 base images. This feature will replace your base image to %s, make sure this meets your expectation.", defaultImage, newImage) + } + return newImage } func (g *generalGraph) Dump() (string, error) { From 936b0ecc7e0a9c0fc3e3325b81cbbcbddcf8e7d0 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 13 Jun 2023 18:09:02 +0800 Subject: [PATCH 158/355] docs: updated CHANGELOG.md (#1651) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a49c0ad9..8647e32c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## v0.3.25 (2023-06-13) + + * [b233d20](https://github.com/tensorchord/envd/commit/b233d204bdaed4a2f8544b11c858611d45f6f427) chore(deps): bump crate-ci/typos from 1.14.12 to 1.15.0 (#1643) + * [170ca4d](https://github.com/tensorchord/envd/commit/170ca4d73d85a4aee0da69625e6d229aaeb2fe87) chore(deps): bump github.com/charmbracelet/bubbletea from 0.24.1 to 0.24.2 (#1645) + * [7e0ab37](https://github.com/tensorchord/envd/commit/7e0ab3789f1b91d3d60a2b9b495d3e3c2bbce4dd) chore(deps): bump github.com/containers/image/v5 from 5.24.1 to 5.25.0 (#1648) + * [cb10df9](https://github.com/tensorchord/envd/commit/cb10df940d38a20b7ddd0eaf2311b962aee9ab9a) chore(deps): bump pypa/cibuildwheel from 2.13.0 to 2.13.1 (#1644) + * [1f9aaf4](https://github.com/tensorchord/envd/commit/1f9aaf4edcd1ec49dc5bfd76dbdd8307f59f1ffc) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.5 to 2.10.0 (#1646) + +### Contributors + + * dependabot[bot] + ## v0.3.24 (2023-06-08) * [edf21bf](https://github.com/tensorchord/envd/commit/edf21bfbe8bfd19f6cdb6be505c0dee0dc851570) fix: authentication for private base image (#1639) From 56406e980f63acfe27e17738f9eab4a24b1e5565 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 14 Jun 2023 15:34:39 +0800 Subject: [PATCH 159/355] feat: support bootstrap buildkit with HTTP (#1652) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/bootstrap.go | 19 +++++++++++++++---- pkg/app/prune.go | 4 ++-- pkg/builder/build.go | 4 ++-- pkg/buildkitd/buildkitd.go | 11 +++++++---- pkg/driver/client.go | 2 +- pkg/driver/docker/docker.go | 22 ++++++++++++++-------- pkg/driver/nerdctl/nerdctl.go | 2 +- 7 files changed, 42 insertions(+), 22 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index fd2125d2c..5f1089587 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -65,6 +65,11 @@ var CommandBootstrap = &cli.Command{ sshconfig.GetPublicKeyOrPanic(), sshconfig.GetPrivateKeyOrPanic()), Aliases: []string{"k"}, }, + &cli.BoolFlag{ + Name: "use-http", + Usage: "Use HTTP instead of HTTPS for the registry", + Value: false, + }, }, Action: bootstrap, @@ -279,17 +284,23 @@ func buildkit(clicontext *cli.Context) error { logrus.Debug("bootstrap the buildkitd container") var bkClient buildkitd.Client + mirror := clicontext.String("dockerhub-mirror") + setRegistryCA := clicontext.IsSet("registry-ca-keypair") + useHTTP := clicontext.Bool("use-http") + + if setRegistryCA && useHTTP { + return errors.New("cannot use both registry CA and HTTP") + } + if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror"), - clicontext.IsSet("registry-ca-keypair")) + c.Builder, c.BuilderAddress, mirror, setRegistryCA, useHTTP) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, clicontext.String("dockerhub-mirror"), - clicontext.IsSet("registry-ca-keypair")) + c.Builder, c.BuilderAddress, mirror, setRegistryCA, useHTTP) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/app/prune.go b/pkg/app/prune.go index 5427a1e0e..270c1f9a8 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -81,13 +81,13 @@ func prune(clicontext *cli.Context) error { var bkClient buildkitd.Client if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, "", false) + c.Builder, c.BuilderAddress, "", false, false) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, "", false) + c.Builder, c.BuilderAddress, "", false, false) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 4c67a25d2..d182209ec 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -90,13 +90,13 @@ func New(ctx context.Context, opt Options) (Builder, error) { var cli buildkitd.Client if c.Builder == types.BuilderTypeMoby { cli, err = buildkitd.NewMobyClient(ctx, - c.Builder, c.BuilderAddress, "", false) + c.Builder, c.BuilderAddress, "", false, false) if err != nil { return nil, errors.Wrap(err, "failed to create moby buildkit client") } } else { cli, err = buildkitd.NewClient(ctx, - c.Builder, c.BuilderAddress, "", false) + c.Builder, c.BuilderAddress, "", false, false) if err != nil { return nil, errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index ae1cbe568..65ed672ba 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -66,6 +66,7 @@ type generalClient struct { image string mirror string enableRegistryCA bool + useHTTP bool driver types.BuilderType socket string @@ -75,13 +76,14 @@ type generalClient struct { } func NewMobyClient(ctx context.Context, driver types.BuilderType, - socket, mirror string, enableRegistryCA bool) (Client, error) { + socket, mirror string, enableRegistryCA bool, useHTTP bool) (Client, error) { logrus.Debug("getting moby buildkit client") c := &generalClient{ containerName: socket, image: viper.GetString(flag.FlagBuildkitdImage), mirror: mirror, enableRegistryCA: enableRegistryCA, + useHTTP: useHTTP, socket: socket, driver: driver, } @@ -104,19 +106,20 @@ func NewMobyClient(ctx context.Context, driver types.BuilderType, }), ) if err != nil { - return nil, errors.Wrap(err, "failed to create buildkit clientt") + return nil, errors.Wrap(err, "failed to create buildkit client") } c.Client = bkcli return c, nil } func NewClient(ctx context.Context, driver types.BuilderType, - socket, mirror string, enableRegistryCA bool) (Client, error) { + socket, mirror string, enableRegistryCA bool, useHTTP bool) (Client, error) { c := &generalClient{ containerName: socket, image: viper.GetString(flag.FlagBuildkitdImage), mirror: mirror, enableRegistryCA: enableRegistryCA, + useHTTP: useHTTP, socket: socket, driver: driver, } @@ -174,7 +177,7 @@ func (c *generalClient) maybeStart(ctx context.Context, if client != nil { if _, err := client.StartBuildkitd(ctx, c.image, c.containerName, c.mirror, - c.enableRegistryCA, runningTimeout); err != nil { + c.enableRegistryCA, c.useHTTP, runningTimeout); err != nil { return "", err } } diff --git a/pkg/driver/client.go b/pkg/driver/client.go index 1248d777c..4e3131267 100644 --- a/pkg/driver/client.go +++ b/pkg/driver/client.go @@ -25,7 +25,7 @@ import ( type Client interface { // Load loads the image from the reader to the docker host. Load(ctx context.Context, r io.ReadCloser, quiet bool) error - StartBuildkitd(ctx context.Context, tag, name, mirror string, enableRegistryCA bool, timeout time.Duration) (string, error) + StartBuildkitd(ctx context.Context, tag, name, mirror string, enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) Exec(ctx context.Context, cname string, cmd []string) error diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 183275100..02180d154 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -43,6 +43,10 @@ const buildkitdMirror = ` [registry."docker.io"] mirrors = ["%s"] ` +const buildkitdHTTP = ` +[registry."docker.io"] + http = true +` const buildkitdCertPath = "/etc/registry" const buildkitdRegistry = ` [registry."docker.io"] @@ -186,7 +190,7 @@ func (c dockerClient) ResumeContainer(ctx context.Context, name string) (string, } func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror string, - enableRegistryCA bool, timeout time.Duration) (string, error) { + enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, "container": name, @@ -218,8 +222,8 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror stri Privileged: true, AutoRemove: true, } + var cfg string if mirror != "" { - var cfg string if enableRegistryCA { cfg = fmt.Sprintf(buildkitdRegistry, mirror) hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ @@ -230,13 +234,15 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror stri } else { cfg = fmt.Sprintf(buildkitdMirror, mirror) } - config.Entrypoint = []string{ - "/bin/sh", - "-c", - fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg), - } - logger.Debugf("setting buildkit config: %s", cfg) + } else if useHTTP { + cfg = buildkitdHTTP + } + config.Entrypoint = []string{ + "/bin/sh", + "-c", + fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg), } + logger.Debugf("setting buildkit config: %s", cfg) created, _ := c.Exists(ctx, name) if created { err := c.ContainerStart(ctx, name, types.ContainerStartOptions{}) diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 7082351c2..2753145e0 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -64,7 +64,7 @@ func (nc *nerdctlClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) } func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name, mirror string, - enableRegistryCA bool, timeout time.Duration) (string, error) { + enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, "container": name, From eae4ed20b8bca6dc54ce4b637254ccfbe771a033 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 14 Jun 2023 16:05:14 +0800 Subject: [PATCH 160/355] chore: typos ignore go.mod go.sum files (#1653) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 31 +++++++++++++------------ go.sum | 68 +++++++++++++++++++++++++++++------------------------- typos.toml | 2 +- 3 files changed, 54 insertions(+), 47 deletions(-) diff --git a/go.mod b/go.mod index 84829b743..979986cd9 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( github.com/schollz/progressbar/v3 v3.13.1 github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.3 - github.com/spf13/viper v1.15.0 + github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.3 github.com/syncthing/syncthing v1.23.5 github.com/tensorchord/envd-server v0.0.27 @@ -52,9 +52,9 @@ require ( require ( cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.18.0 // indirect + cloud.google.com/go/compute v1.19.0 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.12.0 // indirect + cloud.google.com/go/iam v0.13.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect @@ -98,9 +98,10 @@ require ( github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect + github.com/google/s2a-go v0.1.3 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.7.0 // indirect + github.com/googleapis/gax-go/v2 v2.8.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/greatroar/blobloom v0.7.2 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect @@ -121,7 +122,7 @@ require ( github.com/klauspost/cpuid/v2 v2.2.4 // indirect github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect github.com/kr/fs v0.1.0 // indirect - github.com/kr/pretty v0.3.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -148,20 +149,20 @@ require ( github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/opencontainers/runc v1.1.5 // indirect github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect - github.com/pelletier/go-toml/v2 v2.0.6 // indirect + github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect github.com/pierrec/lz4/v4 v4.1.17 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.8.1 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shirou/gopsutil/v3 v3.23.3 // indirect - github.com/spf13/afero v1.9.3 // indirect - github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/afero v1.9.5 // indirect + github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect @@ -186,15 +187,15 @@ require ( golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.10.0 // indirect - golang.org/x/oauth2 v0.6.0 // indirect - golang.org/x/sys v0.8.0 // indirect - golang.org/x/text v0.9.0 // indirect + golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/sys v0.9.0 // indirect + golang.org/x/text v0.10.0 // indirect golang.org/x/tools v0.9.3 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.110.0 // indirect + google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect - google.golang.org/grpc v1.54.0 // indirect + google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.55.0 // indirect google.golang.org/protobuf v1.30.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 8348e8ecb..aa7cd556f 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.18.0 h1:FEigFqoDbys2cvFkZ9Fjq4gnHBP55anJ0yQyau2f9oY= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -112,8 +112,8 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.12.0 h1:DRtTY29b75ciH6Ov1PHb4/iat2CLCvrOm40Q0a6DFpE= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= @@ -368,7 +368,7 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= @@ -434,8 +434,8 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0 h1:nfP3RFugxnNRyKgeWd4oI1nYvXpxrx8ck8ZrcizshdQ= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -519,6 +519,8 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= +github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -538,8 +540,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0 h1:IcsPKeInNvYi7eqSaDjiZqDDKu5rsmunY0Y1YupQSSQ= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= +github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -634,8 +636,9 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -782,8 +785,8 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= -github.com/pelletier/go-toml/v2 v2.0.6 h1:nrzqCb7j9cDFj2coyLNLaZuJTLjWjlaz6nvTvIwycIU= -github.com/pelletier/go-toml/v2 v2.0.6/go.mod h1:eumQOmlWiOPt5WriQQqoM5y18pDHwha2N+QD+EUNTek= +github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= @@ -815,8 +818,9 @@ github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= @@ -856,11 +860,11 @@ github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ= github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= -github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= -github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= +github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= -github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= @@ -871,8 +875,8 @@ github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnIn github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= -github.com/spf13/viper v1.15.0 h1:js3yy885G8xwJa6iOISGFwd+qlUo5AvyXb7CiihdtiU= -github.com/spf13/viper v1.15.0/go.mod h1:fFcTBJxvhhzSJiZy8n+PeW6t8l+KeT/uTARa0jHOQLA= +github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= +github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -997,8 +1001,9 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= @@ -1128,8 +1133,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.6.0 h1:Lh8GPgSKBfWSwFvtuWOfeI3aAAnbXTSutYxJiOJFgIw= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1252,8 +1257,8 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= -golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1271,9 +1276,10 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= -golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1400,8 +1406,8 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.110.0 h1:l+rh0KYUooe9JGbGVx71tbFo4SMbMTXK3I3ia2QSEeU= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= +google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1515,8 +1521,8 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1555,8 +1561,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.54.0 h1:EhTqbhiYeixwWQtAEZAxmV9MGqcjEU2mFx52xCzNyag= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= +google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/typos.toml b/typos.toml index 9fb7e0e4e..33ba3f822 100644 --- a/typos.toml +++ b/typos.toml @@ -1,6 +1,6 @@ # See https://github.com/crate-ci/typos/blob/master/docs/reference.md to configure typos [files] -extend-exclude = ["CHANGELOG.md"] +extend-exclude = ["CHANGELOG.md", "go.mod", "go.sum"] [default.extend-words] iterm = "iterm" WRONLY = "WRONLY" From 1143cbf2fdd110819f9a4027c7f450b08f3fa01f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 16:42:22 +0800 Subject: [PATCH 161/355] docs: updated CHANGELOG.md (#1654) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8647e32c8..6b91a13a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## v0.3.26 (2023-06-14) + + * [56406e9](https://github.com/tensorchord/envd/commit/56406e980f63acfe27e17738f9eab4a24b1e5565) feat: support bootstrap buildkit with HTTP (#1652) + +### Contributors + + * Keming + ## v0.3.25 (2023-06-13) * [b233d20](https://github.com/tensorchord/envd/commit/b233d204bdaed4a2f8544b11c858611d45f6f427) chore(deps): bump crate-ci/typos from 1.14.12 to 1.15.0 (#1643) From 45dffe79097b92f59a61391df72f54e15475bb16 Mon Sep 17 00:00:00 2001 From: Kevin Su <pingsutw@apache.org> Date: Fri, 16 Jun 2023 00:55:10 -0700 Subject: [PATCH 162/355] feat: support bootstrap buildkit with registry (#1656) Signed-off-by: Kevin Su <pingsutw@apache.org> --- pkg/app/bootstrap.go | 10 ++++++++-- pkg/app/prune.go | 4 ++-- pkg/builder/build.go | 4 ++-- pkg/buildkitd/buildkitd.go | 9 ++++++--- pkg/driver/client.go | 2 +- pkg/driver/docker/docker.go | 12 +++++++++--- pkg/driver/nerdctl/nerdctl.go | 2 +- 7 files changed, 29 insertions(+), 14 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 5f1089587..defc64f8e 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -70,6 +70,11 @@ var CommandBootstrap = &cli.Command{ Usage: "Use HTTP instead of HTTPS for the registry", Value: false, }, + &cli.StringFlag{ + Name: "registry", + Usage: "Specify the registry to pull the image from", + Aliases: []string{"r"}, + }, }, Action: bootstrap, @@ -287,6 +292,7 @@ func buildkit(clicontext *cli.Context) error { mirror := clicontext.String("dockerhub-mirror") setRegistryCA := clicontext.IsSet("registry-ca-keypair") useHTTP := clicontext.Bool("use-http") + registry := clicontext.String("registry") if setRegistryCA && useHTTP { return errors.New("cannot use both registry CA and HTTP") @@ -294,13 +300,13 @@ func buildkit(clicontext *cli.Context) error { if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, mirror, setRegistryCA, useHTTP) + c.Builder, c.BuilderAddress, mirror, registry, setRegistryCA, useHTTP) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, mirror, setRegistryCA, useHTTP) + c.Builder, c.BuilderAddress, mirror, registry, setRegistryCA, useHTTP) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/app/prune.go b/pkg/app/prune.go index 270c1f9a8..ab4da99be 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -81,13 +81,13 @@ func prune(clicontext *cli.Context) error { var bkClient buildkitd.Client if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, "", false, false) + c.Builder, c.BuilderAddress, "", "", false, false) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, "", false, false) + c.Builder, c.BuilderAddress, "", "", false, false) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index d182209ec..2957b2f92 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -90,13 +90,13 @@ func New(ctx context.Context, opt Options) (Builder, error) { var cli buildkitd.Client if c.Builder == types.BuilderTypeMoby { cli, err = buildkitd.NewMobyClient(ctx, - c.Builder, c.BuilderAddress, "", false, false) + c.Builder, c.BuilderAddress, "", "", false, false) if err != nil { return nil, errors.Wrap(err, "failed to create moby buildkit client") } } else { cli, err = buildkitd.NewClient(ctx, - c.Builder, c.BuilderAddress, "", false, false) + c.Builder, c.BuilderAddress, "", "", false, false) if err != nil { return nil, errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index 65ed672ba..97b0bcc9c 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -65,6 +65,7 @@ type generalClient struct { containerName string image string mirror string + registry string enableRegistryCA bool useHTTP bool @@ -76,11 +77,12 @@ type generalClient struct { } func NewMobyClient(ctx context.Context, driver types.BuilderType, - socket, mirror string, enableRegistryCA bool, useHTTP bool) (Client, error) { + socket, mirror, registry string, enableRegistryCA bool, useHTTP bool) (Client, error) { logrus.Debug("getting moby buildkit client") c := &generalClient{ containerName: socket, image: viper.GetString(flag.FlagBuildkitdImage), + registry: registry, mirror: mirror, enableRegistryCA: enableRegistryCA, useHTTP: useHTTP, @@ -113,11 +115,12 @@ func NewMobyClient(ctx context.Context, driver types.BuilderType, } func NewClient(ctx context.Context, driver types.BuilderType, - socket, mirror string, enableRegistryCA bool, useHTTP bool) (Client, error) { + socket, mirror, registry string, enableRegistryCA bool, useHTTP bool) (Client, error) { c := &generalClient{ containerName: socket, image: viper.GetString(flag.FlagBuildkitdImage), mirror: mirror, + registry: registry, enableRegistryCA: enableRegistryCA, useHTTP: useHTTP, socket: socket, @@ -176,7 +179,7 @@ func (c *generalClient) maybeStart(ctx context.Context, } if client != nil { - if _, err := client.StartBuildkitd(ctx, c.image, c.containerName, c.mirror, + if _, err := client.StartBuildkitd(ctx, c.image, c.containerName, c.mirror, c.registry, c.enableRegistryCA, c.useHTTP, runningTimeout); err != nil { return "", err } diff --git a/pkg/driver/client.go b/pkg/driver/client.go index 4e3131267..3b22d73bf 100644 --- a/pkg/driver/client.go +++ b/pkg/driver/client.go @@ -25,7 +25,7 @@ import ( type Client interface { // Load loads the image from the reader to the docker host. Load(ctx context.Context, r io.ReadCloser, quiet bool) error - StartBuildkitd(ctx context.Context, tag, name, mirror string, enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) + StartBuildkitd(ctx context.Context, tag, name, mirror, registry string, enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) Exec(ctx context.Context, cname string, cmd []string) error diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 02180d154..b17373ed4 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -47,8 +47,12 @@ const buildkitdHTTP = ` [registry."docker.io"] http = true ` -const buildkitdCertPath = "/etc/registry" const buildkitdRegistry = ` +[registry."%s"] + http = %v +` +const buildkitdCertPath = "/etc/registry" +const buildkitdWithCA = ` [registry."docker.io"] mirrors = ["%s"] ca=["/etc/registry/ca.pem"] @@ -189,7 +193,7 @@ func (c dockerClient) ResumeContainer(ctx context.Context, name string) (string, return name, nil } -func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror string, +func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror, registry string, enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, @@ -225,7 +229,7 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror stri var cfg string if mirror != "" { if enableRegistryCA { - cfg = fmt.Sprintf(buildkitdRegistry, mirror) + cfg = fmt.Sprintf(buildkitdWithCA, mirror) hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ Type: mount.TypeBind, Source: fileutil.DefaultConfigDir, @@ -234,6 +238,8 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror stri } else { cfg = fmt.Sprintf(buildkitdMirror, mirror) } + } else if registry != "" { + cfg = fmt.Sprintf(buildkitdRegistry, registry, useHTTP) } else if useHTTP { cfg = buildkitdHTTP } diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 2753145e0..591a99805 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -63,7 +63,7 @@ func (nc *nerdctlClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) return nil } -func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name, mirror string, +func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name, mirror, registry string, enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, From fa7e989b186149a4f85d39a758bdee7a245b5ebf Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sat, 17 Jun 2023 12:30:46 +0800 Subject: [PATCH 163/355] refactor: use template for buildkit config file (#1658) * refactor: use template for buildkit config file Signed-off-by: Keming <kemingyang@tensorchord.ai> * format Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix test Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/bootstrap.go | 17 +++---- pkg/app/prune.go | 4 +- pkg/builder/build.go | 6 ++- pkg/buildkitd/buildkitd.go | 43 +++++++--------- pkg/driver/client.go | 4 +- pkg/driver/docker/docker.go | 57 ++++++--------------- pkg/driver/nerdctl/nerdctl.go | 21 ++++---- pkg/util/buildkitutil/buildkit.go | 48 ++++++++++++++++++ pkg/util/buildkitutil/buildkit_test.go | 69 ++++++++++++++++++++++++++ 9 files changed, 178 insertions(+), 91 deletions(-) create mode 100644 pkg/util/buildkitutil/buildkit.go create mode 100644 pkg/util/buildkitutil/buildkit_test.go diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index defc64f8e..2dc421937 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -30,6 +30,7 @@ import ( "github.com/tensorchord/envd/pkg/home" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" "github.com/tensorchord/envd/pkg/types" + "github.com/tensorchord/envd/pkg/util/buildkitutil" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -289,24 +290,22 @@ func buildkit(clicontext *cli.Context) error { logrus.Debug("bootstrap the buildkitd container") var bkClient buildkitd.Client - mirror := clicontext.String("dockerhub-mirror") - setRegistryCA := clicontext.IsSet("registry-ca-keypair") - useHTTP := clicontext.Bool("use-http") - registry := clicontext.String("registry") - - if setRegistryCA && useHTTP { - return errors.New("cannot use both registry CA and HTTP") + config := buildkitutil.BuildkitConfig{ + Registry: clicontext.String("registry"), + Mirror: clicontext.String("dockerhub-mirror"), + UseHTTP: clicontext.Bool("use-http"), + SetCA: clicontext.IsSet("registry-ca-keypair"), } if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, mirror, registry, setRegistryCA, useHTTP) + c.Builder, c.BuilderAddress, &config) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, mirror, registry, setRegistryCA, useHTTP) + c.Builder, c.BuilderAddress, &config) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/app/prune.go b/pkg/app/prune.go index ab4da99be..6f212be0a 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -81,13 +81,13 @@ func prune(clicontext *cli.Context) error { var bkClient buildkitd.Client if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, - c.Builder, c.BuilderAddress, "", "", false, false) + c.Builder, c.BuilderAddress, nil) if err != nil { return errors.Wrap(err, "failed to create moby buildkit client") } } else { bkClient, err = buildkitd.NewClient(clicontext.Context, - c.Builder, c.BuilderAddress, "", "", false, false) + c.Builder, c.BuilderAddress, nil) if err != nil { return errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 2957b2f92..39e1cc53b 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -39,6 +39,7 @@ import ( "github.com/tensorchord/envd/pkg/lang/version" "github.com/tensorchord/envd/pkg/progress/progresswriter" "github.com/tensorchord/envd/pkg/types" + "github.com/tensorchord/envd/pkg/util/buildkitutil" ) func New(ctx context.Context, opt Options) (Builder, error) { @@ -88,15 +89,16 @@ func New(ctx context.Context, opt Options) (Builder, error) { } var cli buildkitd.Client + bc := buildkitutil.BuildkitConfig{} if c.Builder == types.BuilderTypeMoby { cli, err = buildkitd.NewMobyClient(ctx, - c.Builder, c.BuilderAddress, "", "", false, false) + c.Builder, c.BuilderAddress, &bc) if err != nil { return nil, errors.Wrap(err, "failed to create moby buildkit client") } } else { cli, err = buildkitd.NewClient(ctx, - c.Builder, c.BuilderAddress, "", "", false, false) + c.Builder, c.BuilderAddress, &bc) if err != nil { return nil, errors.Wrap(err, "failed to create buildkit client") } diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index 97b0bcc9c..a54c4d062 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -37,6 +37,7 @@ import ( "github.com/tensorchord/envd/pkg/driver/nerdctl" "github.com/tensorchord/envd/pkg/flag" "github.com/tensorchord/envd/pkg/types" + "github.com/tensorchord/envd/pkg/util/buildkitutil" "github.com/tensorchord/envd/pkg/util/envutil" ) @@ -62,12 +63,9 @@ type Client interface { } type generalClient struct { - containerName string - image string - mirror string - registry string - enableRegistryCA bool - useHTTP bool + containerName string + image string + buildkitConfig *buildkitutil.BuildkitConfig driver types.BuilderType socket string @@ -77,17 +75,14 @@ type generalClient struct { } func NewMobyClient(ctx context.Context, driver types.BuilderType, - socket, mirror, registry string, enableRegistryCA bool, useHTTP bool) (Client, error) { + socket string, config *buildkitutil.BuildkitConfig) (Client, error) { logrus.Debug("getting moby buildkit client") c := &generalClient{ - containerName: socket, - image: viper.GetString(flag.FlagBuildkitdImage), - registry: registry, - mirror: mirror, - enableRegistryCA: enableRegistryCA, - useHTTP: useHTTP, - socket: socket, - driver: driver, + containerName: socket, + image: viper.GetString(flag.FlagBuildkitdImage), + buildkitConfig: config, + socket: socket, + driver: driver, } c.logger = logrus.WithFields(logrus.Fields{ "container": c.containerName, @@ -115,16 +110,13 @@ func NewMobyClient(ctx context.Context, driver types.BuilderType, } func NewClient(ctx context.Context, driver types.BuilderType, - socket, mirror, registry string, enableRegistryCA bool, useHTTP bool) (Client, error) { + socket string, config *buildkitutil.BuildkitConfig) (Client, error) { c := &generalClient{ - containerName: socket, - image: viper.GetString(flag.FlagBuildkitdImage), - mirror: mirror, - registry: registry, - enableRegistryCA: enableRegistryCA, - useHTTP: useHTTP, - socket: socket, - driver: driver, + containerName: socket, + image: viper.GetString(flag.FlagBuildkitdImage), + buildkitConfig: config, + socket: socket, + driver: driver, } c.logger = logrus.WithFields(logrus.Fields{ "container": c.containerName, @@ -179,8 +171,7 @@ func (c *generalClient) maybeStart(ctx context.Context, } if client != nil { - if _, err := client.StartBuildkitd(ctx, c.image, c.containerName, c.mirror, c.registry, - c.enableRegistryCA, c.useHTTP, runningTimeout); err != nil { + if _, err := client.StartBuildkitd(ctx, c.image, c.containerName, c.buildkitConfig, runningTimeout); err != nil { return "", err } } diff --git a/pkg/driver/client.go b/pkg/driver/client.go index 3b22d73bf..349ed9564 100644 --- a/pkg/driver/client.go +++ b/pkg/driver/client.go @@ -20,12 +20,14 @@ import ( "time" "github.com/docker/docker/api/types" + + "github.com/tensorchord/envd/pkg/util/buildkitutil" ) type Client interface { // Load loads the image from the reader to the docker host. Load(ctx context.Context, r io.ReadCloser, quiet bool) error - StartBuildkitd(ctx context.Context, tag, name, mirror, registry string, enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) + StartBuildkitd(ctx context.Context, tag, name string, config *buildkitutil.BuildkitConfig, timeout time.Duration) (string, error) Exec(ctx context.Context, cname string, cmd []string) error diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index b17373ed4..67f0bbc42 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -36,30 +36,11 @@ import ( "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" + "github.com/tensorchord/envd/pkg/util/buildkitutil" "github.com/tensorchord/envd/pkg/util/fileutil" ) -const buildkitdMirror = ` -[registry."docker.io"] - mirrors = ["%s"] -` -const buildkitdHTTP = ` -[registry."docker.io"] - http = true -` -const buildkitdRegistry = ` -[registry."%s"] - http = %v -` const buildkitdCertPath = "/etc/registry" -const buildkitdWithCA = ` -[registry."docker.io"] - mirrors = ["%s"] - ca=["/etc/registry/ca.pem"] - [[registry."docker.io".keypair]] - key="/etc/registry/key.pem" - cert="/etc/registry/cert.pem" -` var ( anchoredIdentifierRegexp = regexp.MustCompile(`^([a-f0-9]{64})$`) @@ -193,12 +174,11 @@ func (c dockerClient) ResumeContainer(ctx context.Context, name string) (string, return name, nil } -func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror, registry string, - enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) { +func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc *buildkitutil.BuildkitConfig, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ - "tag": tag, - "container": name, - "mirror": mirror, + "tag": tag, + "container": name, + "buildkit-config": bc, }) logger.Debug("starting buildkitd") if _, _, err := c.ImageInspectWithRaw(ctx, tag); err != nil { @@ -226,22 +206,17 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name, mirror, reg Privileged: true, AutoRemove: true, } - var cfg string - if mirror != "" { - if enableRegistryCA { - cfg = fmt.Sprintf(buildkitdWithCA, mirror) - hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ - Type: mount.TypeBind, - Source: fileutil.DefaultConfigDir, - Target: buildkitdCertPath, - }) - } else { - cfg = fmt.Sprintf(buildkitdMirror, mirror) - } - } else if registry != "" { - cfg = fmt.Sprintf(buildkitdRegistry, registry, useHTTP) - } else if useHTTP { - cfg = buildkitdHTTP + + if bc.SetCA { + hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ + Type: mount.TypeBind, + Source: fileutil.DefaultConfigDir, + Target: buildkitdCertPath, + }) + } + cfg, err := bc.String() + if err != nil { + return "", errors.Wrap(err, "failed to generate buildkit config") } config.Entrypoint = []string{ "/bin/sh", diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 591a99805..3f14fc7e4 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -28,6 +28,7 @@ import ( "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" + "github.com/tensorchord/envd/pkg/util/buildkitutil" ) type nerdctlClient struct { @@ -63,13 +64,12 @@ func (nc *nerdctlClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) return nil } -func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name, mirror, registry string, - enableRegistryCA, useHTTP bool, timeout time.Duration) (string, error) { +func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name string, bc *buildkitutil.BuildkitConfig, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ - "tag": tag, - "container": name, - "mirror": mirror, - "driver": "nerdctl", + "tag": tag, + "container": name, + "buildkit-config": bc, + "driver": "nerdctl", }) logger.Debug("starting buildkitd") @@ -83,10 +83,11 @@ func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name, mirror, if !existed { buildkitdCmd := "buildkitd" // TODO: support mirror CA keypair - if mirror != "" { - cfg := fmt.Sprintf(` -[registry."docker.io"] - mirrors = ["%s"]`, mirror) + if bc.Registry != "" || bc.Mirror != "" || bc.UseHTTP { + cfg, err := bc.String() + if err != nil { + return "", errors.Wrap(err, "failed to generate buildkit config") + } buildkitdCmd = fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg) logger.Debugf("setting buildkit config: %s", cfg) } diff --git a/pkg/util/buildkitutil/buildkit.go b/pkg/util/buildkitutil/buildkit.go new file mode 100644 index 000000000..161dbd966 --- /dev/null +++ b/pkg/util/buildkitutil/buildkit.go @@ -0,0 +1,48 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package buildkitutil + +import ( + "strings" + "text/template" +) + +const buildkitConfigTemplate = ` +[registry."{{ if .Registry }}{{ .Registry }}{{ else }}docker.io{{ end }}"]{{ if .Mirror }} + mirrors = ["{{ .Mirror }}"]{{ end }} + http = {{ .UseHTTP }} + {{ if .SetCA}}ca=["/etc/registry/ca.pem"] + [[registry."{{ if .Registry }}{{ .Registry }}{{ else }}docker.io{{ end }}".keypair]] + key="/etc/registry/key.pem" + cert="/etc/registry/cert.pem" + {{ end }} +` + +type BuildkitConfig struct { + Registry string + Mirror string + UseHTTP bool + SetCA bool +} + +func (c *BuildkitConfig) String() (string, error) { + tmpl, err := template.New("buildkitConfig").Parse(buildkitConfigTemplate) + if err != nil { + return "", err + } + var config strings.Builder + err = tmpl.Execute(&config, c) + return config.String(), err +} diff --git a/pkg/util/buildkitutil/buildkit_test.go b/pkg/util/buildkitutil/buildkit_test.go new file mode 100644 index 000000000..f613e1d16 --- /dev/null +++ b/pkg/util/buildkitutil/buildkit_test.go @@ -0,0 +1,69 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package buildkitutil + +import ( + "strings" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestBuildkitWithRegistry(t *testing.T) { + testCases := []struct { + bc BuildkitConfig + expected string + }{ + { + BuildkitConfig{ + Registry: "registry.example.com", + Mirror: "https://mirror.example.com", + UseHTTP: true, + }, + ` +[registry."registry.example.com"] + mirrors = ["https://mirror.example.com"] + http = true +`, + }, + { + BuildkitConfig{ + Registry: "registry.example.com", + SetCA: true, + }, + ` +[registry."registry.example.com"] + http = false + ca=["/etc/registry/ca.pem"] + [[registry."registry.example.com".keypair]] + key="/etc/registry/key.pem" + cert="/etc/registry/cert.pem" +`, + }, + { + BuildkitConfig{}, + ` +[registry."docker.io"] + http = false + `, + }, + } + + for _, tc := range testCases { + config, err := tc.bc.String() + assert.NoError(t, err) + assert.Equal(t, strings.TrimSpace(tc.expected), strings.TrimSpace(config)) + } +} From 1e1258234916978b66c53eb18b6dc808fab50a5c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 17 Jun 2023 12:51:03 +0800 Subject: [PATCH 164/355] docs: updated CHANGELOG.md (#1659) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b91a13a3..02de67c5a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## v0.3.27 (2023-06-17) + + * [fa7e989](https://github.com/tensorchord/envd/commit/fa7e989b186149a4f85d39a758bdee7a245b5ebf) refactor: use template for buildkit config file (#1658) + * [45dffe7](https://github.com/tensorchord/envd/commit/45dffe79097b92f59a61391df72f54e15475bb16) feat: support bootstrap buildkit with registry (#1656) + +### Contributors + + * Keming + * Kevin Su + ## v0.3.26 (2023-06-14) * [56406e9](https://github.com/tensorchord/envd/commit/56406e980f63acfe27e17738f9eab4a24b1e5565) feat: support bootstrap buildkit with HTTP (#1652) From a65af6e1e5d3eb74250b172080ddf39fc8d52a58 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jun 2023 13:17:37 +0800 Subject: [PATCH 165/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.10.0 to 2.11.0 (#1660) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.10.0 to 2.11.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.10.0...v2.11.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 979986cd9..459c10282 100644 --- a/go.mod +++ b/go.mod @@ -27,8 +27,8 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.10.0 - github.com/onsi/gomega v1.27.7 + github.com/onsi/ginkgo/v2 v2.11.0 + github.com/onsi/gomega v1.27.8 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index aa7cd556f..0146e61ed 100644 --- a/go.sum +++ b/go.sum @@ -752,14 +752,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.10.0 h1:sfUl4qgLdvkChZrWCYndY2EAu9BRIw1YphNAzy1VNWs= -github.com/onsi/ginkgo/v2 v2.10.0/go.mod h1:UDQOh5wbQUlMnkLfVaIUMtQ1Vus92oM+P2JX1aulgcE= +github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= +github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.7 h1:fVih9JD6ogIiHUN6ePK7HJidyEDpWGVB5mzM7cWNXoU= -github.com/onsi/gomega v1.27.7/go.mod h1:1p8OOlwo2iUUDsHnOrjE5UKYJ+e3W8eQ3qSlRahPmr4= +github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= +github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From d69aac37dcbdd7c65e8f937d90bca74889cbd2da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jun 2023 13:18:16 +0800 Subject: [PATCH 166/355] chore(deps): bump golang.org/x/crypto from 0.9.0 to 0.10.0 (#1664) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.9.0 to 0.10.0. - [Commits](https://github.com/golang/crypto/compare/v0.9.0...v0.10.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 459c10282..7eb7227db 100644 --- a/go.mod +++ b/go.mod @@ -44,9 +44,9 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.5 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.9.0 + golang.org/x/crypto v0.10.0 golang.org/x/sync v0.2.0 - golang.org/x/term v0.8.0 + golang.org/x/term v0.9.0 golang.org/x/time v0.3.0 ) diff --git a/go.sum b/go.sum index 0146e61ed..0e7f20e9b 100644 --- a/go.sum +++ b/go.sum @@ -1005,8 +1005,8 @@ golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= -golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= +golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1265,8 +1265,8 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= -golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= +golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 24aaf4204d75b6488183a206f373d826c44e285a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Jun 2023 13:18:57 +0800 Subject: [PATCH 167/355] chore(deps): bump github.com/urfave/cli/v2 from 2.25.5 to 2.25.7 (#1662) Bumps [github.com/urfave/cli/v2](https://github.com/urfave/cli) from 2.25.5 to 2.25.7. - [Release notes](https://github.com/urfave/cli/releases) - [Changelog](https://github.com/urfave/cli/blob/main/docs/CHANGELOG.md) - [Commits](https://github.com/urfave/cli/compare/v2.25.5...v2.25.7) --- updated-dependencies: - dependency-name: github.com/urfave/cli/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 7eb7227db..3804c7485 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f - github.com/urfave/cli/v2 v2.25.5 + github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.10.0 golang.org/x/sync v0.2.0 @@ -58,7 +58,7 @@ require ( cloud.google.com/go/storage v1.28.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect + github.com/BurntSushi/toml v1.3.2 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect diff --git a/go.sum b/go.sum index 0e7f20e9b..f182ac2c2 100644 --- a/go.sum +++ b/go.sum @@ -198,8 +198,9 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= +github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= @@ -927,8 +928,8 @@ github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0o github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= -github.com/urfave/cli/v2 v2.25.5 h1:d0NIAyhh5shGscroL7ek/Ya9QYQE0KNabJgiUinIQkc= -github.com/urfave/cli/v2 v2.25.5/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= +github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= From 14c72278542486175477b8f52aef6079a03b01e5 Mon Sep 17 00:00:00 2001 From: Yuan Tang <terrytangyuan@gmail.com> Date: Mon, 19 Jun 2023 17:23:05 -0400 Subject: [PATCH 168/355] chore: Remove dependabot upgrades from changelog. Fixes #1655 (#1665) Signed-off-by: Yuan Tang <terrytangyuan@gmail.com> --- CHANGELOG.md | 329 ---------------------------------------------- hack/changelog.sh | 2 +- 2 files changed, 1 insertion(+), 330 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02de67c5a..f2ca63e62 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,79 +20,40 @@ ## v0.3.25 (2023-06-13) - * [b233d20](https://github.com/tensorchord/envd/commit/b233d204bdaed4a2f8544b11c858611d45f6f427) chore(deps): bump crate-ci/typos from 1.14.12 to 1.15.0 (#1643) - * [170ca4d](https://github.com/tensorchord/envd/commit/170ca4d73d85a4aee0da69625e6d229aaeb2fe87) chore(deps): bump github.com/charmbracelet/bubbletea from 0.24.1 to 0.24.2 (#1645) - * [7e0ab37](https://github.com/tensorchord/envd/commit/7e0ab3789f1b91d3d60a2b9b495d3e3c2bbce4dd) chore(deps): bump github.com/containers/image/v5 from 5.24.1 to 5.25.0 (#1648) - * [cb10df9](https://github.com/tensorchord/envd/commit/cb10df940d38a20b7ddd0eaf2311b962aee9ab9a) chore(deps): bump pypa/cibuildwheel from 2.13.0 to 2.13.1 (#1644) - * [1f9aaf4](https://github.com/tensorchord/envd/commit/1f9aaf4edcd1ec49dc5bfd76dbdd8307f59f1ffc) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.5 to 2.10.0 (#1646) ### Contributors - * dependabot[bot] ## v0.3.24 (2023-06-08) * [edf21bf](https://github.com/tensorchord/envd/commit/edf21bfbe8bfd19f6cdb6be505c0dee0dc851570) fix: authentication for private base image (#1639) - * [1af61d3](https://github.com/tensorchord/envd/commit/1af61d3777c5c19652643411c87c068831899e01) chore(deps): bump github.com/syncthing/syncthing from 1.23.4 to 1.23.5 (#1637) - * [70b8b60](https://github.com/tensorchord/envd/commit/70b8b60af45704f3de3165462d844ba283a68d3c) chore(deps): bump github.com/containerd/containerd from 1.6.19 to 1.7.2 (#1633) - * [9cdc234](https://github.com/tensorchord/envd/commit/9cdc234638b72a161bd004338671cf91355acdce) chore(deps): bump github.com/sirupsen/logrus from 1.9.2 to 1.9.3 (#1634) - * [ef97732](https://github.com/tensorchord/envd/commit/ef97732a6a0258ed104ffb3fc99fcb1036762257) chore(deps): bump github.com/urfave/cli/v2 from 2.25.4 to 2.25.5 (#1635) - * [b2ae823](https://github.com/tensorchord/envd/commit/b2ae823bf97c4351a9fa26d5317e2ad76211ad2d) chore(deps): bump crate-ci/typos from 1.14.11 to 1.14.12 (#1630) - * [7d6f107](https://github.com/tensorchord/envd/commit/7d6f107aa2a65572b549169fe92a8f992d592f4c) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 (#1625) - * [67f0962](https://github.com/tensorchord/envd/commit/67f096235fc580542bda91fa5207374277c4b912) chore(deps): bump github.com/charmbracelet/bubbletea from 0.24.0 to 0.24.1 (#1627) - * [2f37763](https://github.com/tensorchord/envd/commit/2f37763851fc918707589be335758348eb95dd0b) chore(deps): bump github.com/onsi/gomega from 1.27.6 to 1.27.7 (#1626) - * [637b1f2](https://github.com/tensorchord/envd/commit/637b1f2447dc21155b5038ea7001658f5db064ed) chore(deps): bump github.com/urfave/cli/v2 from 2.25.3 to 2.25.4 (#1624) - * [886c1f5](https://github.com/tensorchord/envd/commit/886c1f5c5299251f6fb218df291a676bdade502b) chore(deps): bump pypa/cibuildwheel from 2.12.3 to 2.13.0 (#1621) - * [c7dc7f9](https://github.com/tensorchord/envd/commit/c7dc7f945e096c54a1b30b23e197fed94ad6eda7) chore(deps): bump dependabot/fetch-metadata from 1.4.0 to 1.5.1 (#1622) - * [fa5e457](https://github.com/tensorchord/envd/commit/fa5e457a785b95e5453be51fa5bf01c780f21bfd) chore(deps): bump crate-ci/typos from 1.14.10 to 1.14.11 (#1623) ### Contributors * Keming - * dependabot[bot] ## v0.3.23 (2023-05-25) * [8a175ed](https://github.com/tensorchord/envd/commit/8a175ed71d59859f57592ddbe73203c4dd8dd6c5) feat: create dest path in io.copy (#1619) * [7500fa2](https://github.com/tensorchord/envd/commit/7500fa282a582883501c7a70145b4b36f5d2d40b) Documentation improvements (typos, grammar etc) (#1617) - * [ef72477](https://github.com/tensorchord/envd/commit/ef724776d2da7e75c092c02d5177d5e2c8d4914c) chore(deps): bump github.com/mattn/go-isatty from 0.0.18 to 0.0.19 (#1613) - * [8ab6389](https://github.com/tensorchord/envd/commit/8ab63891391e32d9f4c384ff50d6da97fd5e5074) chore(deps): bump github.com/containers/image/v5 from 5.24.1 to 5.25.0 (#1612) - * [77ff5a5](https://github.com/tensorchord/envd/commit/77ff5a5de9e46fb4a4176e31c3b513d27ab06b08) chore(deps): bump github.com/sirupsen/logrus from 1.9.0 to 1.9.2 (#1614) - * [e59c289](https://github.com/tensorchord/envd/commit/e59c2897d75316c65e8082c162b0cc4bb37a055c) chore(deps): bump crate-ci/typos from 1.14.9 to 1.14.10 (#1611) - * [4c34791](https://github.com/tensorchord/envd/commit/4c34791959433ee6a2e691884b83666def08ebff) chore(deps): bump github.com/docker/cli from 24.0.0-rc.2+incompatible to 24.0.1+incompatible (#1616) - * [0aef7ce](https://github.com/tensorchord/envd/commit/0aef7ceebe7a316c7068ffd89f79a06d184e6efa) chore(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.3 (#1615) - * [cef883b](https://github.com/tensorchord/envd/commit/cef883bedc8efe4482bcab9e96ede59b80acd608) chore(deps): bump golang.org/x/sync from 0.1.0 to 0.2.0 (#1608) - * [889cf6d](https://github.com/tensorchord/envd/commit/889cf6d41e54a7d2b15277e90993d39927516b5a) chore(deps): bump github.com/containerd/containerd from 1.6.19 to 1.7.1 (#1607) - * [8e3deeb](https://github.com/tensorchord/envd/commit/8e3deebd9b2e2b5655eb3294774435207bf44d73) chore(deps): bump github.com/charmbracelet/bubbletea from 0.23.2 to 0.24.0 (#1610) - * [bd07f0f](https://github.com/tensorchord/envd/commit/bd07f0fef3e914f2ecdad414651392e7ebb97eb9) chore(deps): bump golang.org/x/crypto from 0.8.0 to 0.9.0 (#1609) - * [a1615f2](https://github.com/tensorchord/envd/commit/a1615f2083f7c8c79d8bcf9b91578e03bfbfa56b) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2 to 1.1.0-rc.3 (#1606) ### Contributors * Keming * Teddy Xinyuan Chen - * dependabot[bot] ## v0.3.22 (2023-05-12) * [6569021](https://github.com/tensorchord/envd/commit/656902196da2e847bdfa30999883702f22a7e118) feat: build image by platform (#1582) * [2839aa3](https://github.com/tensorchord/envd/commit/2839aa33bf097b440064aad9a1aaba461647db50) feat: support mirror ca for buildkitd (#1602) - * [2fbb447](https://github.com/tensorchord/envd/commit/2fbb4475c7da55dc4fc23e25dfb6f6c8666f63cf) chore(deps): bump github.com/docker/distribution from 2.8.1+incompatible to 2.8.2+incompatible (#1604) * [fd45847](https://github.com/tensorchord/envd/commit/fd45847e4ebec79bf644d291fa4d2420ea032373) fix: bootstrap with key pair using the same path for pri/pub key (#1603) * [2fa41c7](https://github.com/tensorchord/envd/commit/2fa41c7388af41e3ed8de2653d5402ad4bf52369) fix: merge language packages to system packages (#1593) - * [4306ddf](https://github.com/tensorchord/envd/commit/4306ddf8b490b546f7292df5605a866c63110686) chore(deps): bump github.com/urfave/cli/v2 from 2.25.2 to 2.25.3 (#1600) - * [e9c1cb9](https://github.com/tensorchord/envd/commit/e9c1cb9efe743a241c8c7436402e866c76d73d53) chore(deps): bump github.com/docker/cli from 24.0.0-beta.2+incompatible to 24.0.0-rc.2+incompatible (#1598) - * [0700488](https://github.com/tensorchord/envd/commit/0700488320abbaf4a142a93c2f497bf2915d6da7) chore(deps): bump golang.org/x/term from 0.7.0 to 0.8.0 (#1599) - * [d109a28](https://github.com/tensorchord/envd/commit/d109a280ff9c67f64cf8275dd712ae2c471c6994) chore(deps): bump github.com/moby/term from 0.0.0-20221120202655-abb19827d345 to 0.5.0 (#1601) - * [e5972b2](https://github.com/tensorchord/envd/commit/e5972b27eb700af06b739f17d0fcbbaa659f0798) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#1597) - * [4f731b9](https://github.com/tensorchord/envd/commit/4f731b9a6ebfa2fb105c34dadd88f053c9e8cbb6) chore(deps): bump crate-ci/typos from 1.14.8 to 1.14.9 (#1596) * [d4df02a](https://github.com/tensorchord/envd/commit/d4df02a4e15e73aff64dfd38cc68ffc2058892f3) fix: In debug model, there is progress display. (#1595) * [8ab73d8](https://github.com/tensorchord/envd/commit/8ab73d8a7faa9b9fa4a0f882ae904683e2867868) fix(v1): rm bash absolute path (#1594) ### Contributors * Keming - * dependabot[bot] * hang lv * rrain7 @@ -107,29 +68,20 @@ ## v0.3.20 (2023-05-02) * [6e055c6](https://github.com/tensorchord/envd/commit/6e055c61fdc1cdba6959c8a54ead5aad6654090e) feat: inherit entrypoint from the base image (#1587) - * [9673a1f](https://github.com/tensorchord/envd/commit/9673a1fdff7b38cc3f230931e6138eddbc38a5af) chore(deps): bump github.com/urfave/cli/v2 from 2.25.1 to 2.25.2 (#1586) - * [f638d07](https://github.com/tensorchord/envd/commit/f638d07b6afc4d341b29fc315d60881cab354e9f) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc2.0.20221005185240-3a7f492d3f1b to 1.1.0-rc.3 (#1584) * [4a38eca](https://github.com/tensorchord/envd/commit/4a38eca4ddffdb3c24361de90cf2102e7c80fdab) fix: reduce llb merge in language part if not necessary (#1581) * [d4e5836](https://github.com/tensorchord/envd/commit/d4e58366802efc444c9e0986d42f3836871abe8a) fix: rm the focus in docs v1 test (#1579) ### Contributors * Keming - * dependabot[bot] ## v0.3.19 (2023-04-25) * [ad73e37](https://github.com/tensorchord/envd/commit/ad73e37a17a4142c903d9f7bd4434f67708384fa) fix: hard code amd64 to support remote build (#1577) - * [599f001](https://github.com/tensorchord/envd/commit/599f00164d821f2b3caac5909d623d504c6d8ca4) chore(deps): bump dependabot/fetch-metadata from 1.3.6 to 1.4.0 (#1573) - * [78ac026](https://github.com/tensorchord/envd/commit/78ac026949a967504e01f36e2c379de1d7d02acf) chore(deps): bump google.golang.org/protobuf from 1.29.0 to 1.29.1 (#1576) - * [00cbc47](https://github.com/tensorchord/envd/commit/00cbc47ab31261d2a1ce890974de523979a763fc) chore(deps): bump pypa/cibuildwheel from 2.12.1 to 2.12.3 (#1572) - * [42c5913](https://github.com/tensorchord/envd/commit/42c591385b96bbaa826f70b3e5a7e8293ec1bac3) chore(deps): bump github.com/syncthing/syncthing from 1.23.1 to 1.23.4 (#1574) - * [d9bbb37](https://github.com/tensorchord/envd/commit/d9bbb3786f87663e7ff7555a58f156dad4a6bec5) chore(deps): bump crate-ci/typos from 1.14.6 to 1.14.8 (#1571) ### Contributors * Ce Gao - * dependabot[bot] ## v0.3.18 (2023-04-23) @@ -148,88 +100,52 @@ * [3e426d2](https://github.com/tensorchord/envd/commit/3e426d25d300fad5b3d903ee35aefbbb26f0564b) Download vs code extension by platform (#1566) * [f3acdff](https://github.com/tensorchord/envd/commit/f3acdff65d68e9315a0575e0d41c3354fb2562bc) fix: compile vscode extensions with user state (#1564) * [bc0eaf8](https://github.com/tensorchord/envd/commit/bc0eaf86034cd174afa362ecf904c7ea13aec9b6) feat: friendly prompt when exec `envd init` (#1562) - * [c0010cc](https://github.com/tensorchord/envd/commit/c0010cc59de11a4a188bbfccd31d3e8f4ff65892) chore(deps): bump github.com/docker/cli from 23.0.0-rc.3+incompatible to 24.0.0-beta.2+incompatible (#1561) - * [60686bc](https://github.com/tensorchord/envd/commit/60686bc63ad4bf95bac36b67fb890fe940dab1c3) chore(deps): bump crate-ci/typos from 1.14.5 to 1.14.6 (#1560) - * [db8d342](https://github.com/tensorchord/envd/commit/db8d342c1eeb0f41d45b28e6f7b6a82604fb9f4b) chore(deps): bump golang.org/x/crypto from 0.7.0 to 0.8.0 (#1556) * [e383395](https://github.com/tensorchord/envd/commit/e3833954ef61b1ca1305303565ff1376f5bd1ea2) feat: bring apt-source compilation earlier (#1554) - * [dd48167](https://github.com/tensorchord/envd/commit/dd4816746720a813755f59b72e281c2cdc5ce59b) chore(deps): bump golang.org/x/term from 0.6.0 to 0.7.0 (#1555) - * [c385cb5](https://github.com/tensorchord/envd/commit/c385cb560572c95450a2ba3c3e3f3b9a76f7f9c7) chore(deps): bump crate-ci/typos from 1.14.3 to 1.14.5 (#1557) - * [b36f07e](https://github.com/tensorchord/envd/commit/b36f07ed014bfed87e9703dae47fdd532cb741e4) chore(deps): bump peter-evans/create-pull-request from 4 to 5 (#1558) - * [3393bc5](https://github.com/tensorchord/envd/commit/3393bc56290265f79a97e83b6eab45faae1e6ae7) chore(deps): bump github.com/onsi/gomega from 1.27.5 to 1.27.6 (#1552) ### Contributors - * dependabot[bot] * hang lv * rrain7 ## v0.3.16 (2023-03-30) * [04f43da](https://github.com/tensorchord/envd/commit/04f43da45423d18feb3a0899ab3589248be7f701) feat: fall back default builder to buildkit-container (#1548) - * [1f547f9](https://github.com/tensorchord/envd/commit/1f547f9d7c907557e7f257fa17bf50e39fdce603) chore(deps): bump github.com/onsi/gomega from 1.27.4 to 1.27.5 (#1544) - * [ba76ca6](https://github.com/tensorchord/envd/commit/ba76ca6823c515a99e4917ecd1b6fb20f1b8006b) chore(deps): bump github.com/urfave/cli/v2 from 2.25.0 to 2.25.1 (#1543) - * [bf88f7c](https://github.com/tensorchord/envd/commit/bf88f7c9e8d68b539281b24a4070cd4e74c1f8bb) chore(deps): bump github.com/mattn/go-isatty from 0.0.17 to 0.0.18 (#1545) - * [828fad7](https://github.com/tensorchord/envd/commit/828fad70758f9d81b3811122259ed258d93ff655) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.9.1 to 2.9.2 (#1542) * [21c3355](https://github.com/tensorchord/envd/commit/21c3355c682476179255ed976cbdb70e9b47a60d) feat(CLI): add fish completion (#1546) - * [c3a8e1c](https://github.com/tensorchord/envd/commit/c3a8e1cd827c8a99820bbe34e83b9590e2d071b0) chore(deps): bump crate-ci/typos from 1.13.26 to 1.14.3 (#1540) ### Contributors * Kaiyang Chen - * dependabot[bot] * zhang-wei ## v0.3.15 (2023-03-24) * [4d62312](https://github.com/tensorchord/envd/commit/4d62312b53db197e6735175eb59e7e58e62dcb60) feat: Support set environment name in `envd up` command (#1495) * [9a4cad6](https://github.com/tensorchord/envd/commit/9a4cad69d460a1bee4cf4f6056e670a8f121931c) fix(v1): add base env and runtime env to both dev&nondev (#1538) - * [176637b](https://github.com/tensorchord/envd/commit/176637b7e68081045937a30101e022bda9a2e74d) chore(deps): bump github.com/schollz/progressbar/v3 from 3.13.0 to 3.13.1 (#1534) - * [574a93a](https://github.com/tensorchord/envd/commit/574a93adc7a32111fceb37adc27e8fa45632e4e9) chore(deps): bump github.com/onsi/gomega from 1.27.2 to 1.27.4 (#1535) - * [b644dc5](https://github.com/tensorchord/envd/commit/b644dc5e543e6794c6ecbdb1bb891673514f5b83) chore(deps): bump actions/setup-go from 3 to 4 (#1532) - * [b4ab3f3](https://github.com/tensorchord/envd/commit/b4ab3f3f4c9f3bda18c99eddeded0cc70319528b) chore(deps): bump crate-ci/typos from 1.13.20 to 1.13.26 (#1533) * [c065935](https://github.com/tensorchord/envd/commit/c065935e1ea053a40efd1543f30000f1c5303bc8) feat: support GitHub merge queue (#1531) ### Contributors * Keming * Nadeshiko Manju - * dependabot[bot] ## v0.3.14 (2023-03-17) * [095811d](https://github.com/tensorchord/envd/commit/095811d63651c121e1e941747569f7f8e264efea) fix: add env to the image itself instead of runtime config (#1528) * [84b24ee](https://github.com/tensorchord/envd/commit/84b24eec98a86c479e984d4b8352ec249a791600) fix: upgrade buildkit to fix the secury issue (#1526) - * [168434a](https://github.com/tensorchord/envd/commit/168434a7585ab0286417bfa023dece9063bc2b39) chore(deps): bump golang.org/x/crypto from 0.6.0 to 0.7.0 (#1515) - * [2ded823](https://github.com/tensorchord/envd/commit/2ded823e77451959fc37f14a80270fe8715ead14) chore(deps): bump github.com/containerd/containerd from 1.6.18 to 1.7.0 (#1524) - * [17c7113](https://github.com/tensorchord/envd/commit/17c7113d9b19830ecb4a7c14839c894f05f29326) chore(deps): bump github.com/charmbracelet/lipgloss from 0.6.0 to 0.7.1 (#1525) - * [8269b6b](https://github.com/tensorchord/envd/commit/8269b6b65e8cabee7fd70b442b079ac8f5c13e66) chore(deps): bump github.com/urfave/cli/v2 from 2.24.4 to 2.25.0 (#1522) - * [7ef5074](https://github.com/tensorchord/envd/commit/7ef507410df7222c4df5fc6814c08af7994623a9) chore(deps): bump crate-ci/typos from 1.13.16 to 1.13.20 (#1521) - * [a50d7b5](https://github.com/tensorchord/envd/commit/a50d7b510caa092607bbd08267c03d9012561c34) chore(deps): bump pypa/cibuildwheel from 2.12.0 to 2.12.1 (#1520) - * [cb90327](https://github.com/tensorchord/envd/commit/cb90327362f768ba37b3d03b1524dd3535156acf) chore(deps): bump github.com/onsi/gomega from 1.27.1 to 1.27.2 (#1513) - * [60ebd49](https://github.com/tensorchord/envd/commit/60ebd49063caf28a2aa53c7f9b825831ea2cb3a3) chore(deps): bump golang.org/x/term from 0.5.0 to 0.6.0 (#1514) - * [2a3b592](https://github.com/tensorchord/envd/commit/2a3b59277f53b9901193c7cb6b584fd2850d7ad1) chore(deps): bump crate-ci/typos from 1.13.12 to 1.13.16 (#1512) * [8c23bad](https://github.com/tensorchord/envd/commit/8c23bad4f349a4024ee658c11d0ac056856e0692) e2e MNIST deep learning example for R (#1510) - * [1e1819f](https://github.com/tensorchord/envd/commit/1e1819f0083559cc4998259ae9204089094a0daf) chore(deps): bump github.com/stretchr/testify from 1.8.1 to 1.8.2 (#1507) - * [c165138](https://github.com/tensorchord/envd/commit/c1651384a0cee0840352c0813b157ff31046dc45) chore(deps): bump github.com/tensorchord/envd-server from 0.0.25 to 0.0.27 (#1505) - * [484a452](https://github.com/tensorchord/envd/commit/484a45206aa0a03bd9307cb5dd73167d69b069e3) chore(deps): bump crate-ci/typos from 1.13.10 to 1.13.12 (#1504) * [b641b0c](https://github.com/tensorchord/envd/commit/b641b0c56b9925ee2024093ec6bd7450fca40b4d) feat: Support installing multi-language environment at the same time (#1501) * [f19289e](https://github.com/tensorchord/envd/commit/f19289e1646ed724e1b32b26c527324c95773e80) misc: Use GitHub Issue Form instead of markdown template (#1494) * [dc57256](https://github.com/tensorchord/envd/commit/dc57256211e3a7b714ca5185254e66f5a979e02a) feat: add typos to pre-commit and GitHub action (#1493) - * [6bf7d5b](https://github.com/tensorchord/envd/commit/6bf7d5ba68772759904ba434e0394df2d9d08f5f) chore(deps): bump github.com/urfave/cli/v2 from 2.24.3 to 2.24.4 (#1490) - * [17e133c](https://github.com/tensorchord/envd/commit/17e133c9680a4e9396dfaf8b3622828d6655a187) chore(deps): bump github.com/onsi/gomega from 1.26.0 to 1.27.1 (#1489) - * [3919cb2](https://github.com/tensorchord/envd/commit/3919cb21a19c423d77943a98f0a1ee29e0f820b0) chore(deps): bump golang.org/x/net from 0.6.0 to 0.7.0 (#1488) ### Contributors * Keming * Nadeshiko Manju * Zhizhen He - * dependabot[bot] * x0oo0x ## v0.3.13 (2023-02-20) - * [0f21639](https://github.com/tensorchord/envd/commit/0f21639612f0c438bcd57f07de273858f5a70d81) chore(deps): bump github.com/containerd/containerd from 1.6.17 to 1.6.18 (#1481) * [53ba50e](https://github.com/tensorchord/envd/commit/53ba50e06fd1af5026a59c88d3886b5c8ca059de) feat: support CPU and memory limit for docker runner (#1486) * [b0143c3](https://github.com/tensorchord/envd/commit/b0143c34b2d868c5f2e2c7b231b5ededca0f29ea) feat: Allow buildkit timeout to be configurable (#1482) * [8adb6a9](https://github.com/tensorchord/envd/commit/8adb6a9a0ad7ebea21fd92bdd80883bb71291938) Julia MNIST classification e2e test example (#1484) @@ -240,56 +156,37 @@ * Keming * Yuan Tang * Zhizhen He - * dependabot[bot] * x0oo0x ## v0.3.12 (2023-02-14) * [0929661](https://github.com/tensorchord/envd/commit/09296619283ce568866df414bf26db3bda24d9c7) feat: support buildx moby worker in docker 23.0.0 onward to accelerating building process by skipping docker load (#1472) - * [34ca5b6](https://github.com/tensorchord/envd/commit/34ca5b64ac4ab8c60c40e60dfb8d6269e8cf2a59) chore(deps): bump github.com/charmbracelet/bubbletea from 0.23.1 to 0.23.2 (#1475) - * [4885a2f](https://github.com/tensorchord/envd/commit/4885a2ff05536f820122e397babc0604212e7681) chore(deps): bump golang.org/x/crypto from 0.5.0 to 0.6.0 (#1476) - * [5bf3816](https://github.com/tensorchord/envd/commit/5bf381601a3bd276a68ee07b28fecb12dd336fe6) chore(deps): bump github.com/containerd/containerd from 1.6.16 to 1.6.17 (#1474) * [986c52a](https://github.com/tensorchord/envd/commit/986c52a2b9ccec53a688de9bd03bd5cc880129bf) fix: unify receiver type for generalManager (#1473) * [ae3a1e5](https://github.com/tensorchord/envd/commit/ae3a1e5680bffa214e22f0ef3d8a5b10b6be824a) fix: pass loop variable as a function parameter (#1470) * [23e4fa9](https://github.com/tensorchord/envd/commit/23e4fa9a552aecab43566504f6c66ede5f57d6b2) feat: add progress bar for `envd up` and `envd run` (#1460) - * [d9f8dfc](https://github.com/tensorchord/envd/commit/d9f8dfc8a36d7316dd6908e722418efed7fef17a) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.7.1 to 2.8.0 (#1465) - * [8706aef](https://github.com/tensorchord/envd/commit/8706aef34c0aa1f3afd17522199548825459495a) chore(deps): bump github.com/urfave/cli/v2 from 2.24.1 to 2.24.3 (#1464) - * [8413af8](https://github.com/tensorchord/envd/commit/8413af8775cc9d59393abd5a2c1365f23deaa216) chore(deps): bump docker/build-push-action from 3 to 4 (#1463) - * [4b3e768](https://github.com/tensorchord/envd/commit/4b3e7689fb87b0d0465b89565e7a870669895e6e) chore(deps): bump github.com/cockroachdb/errors from 1.9.0 to 1.9.1 (#1467) ### Contributors * Kaiyang Chen * Keming * Zhizhen He - * dependabot[bot] ## v0.3.11 (2023-02-01) * [89383b5](https://github.com/tensorchord/envd/commit/89383b5bba5229e9cb133515b69a1eccdd0331da) fix: rm redundant ForwardAgent config in ssh config (#1458) * [b9f20a4](https://github.com/tensorchord/envd/commit/b9f20a4bfa28bf4bf0cb4ae90c3ba95e5ef23bb1) feat: separate starship installation by using fixed image (#1424) - * [2ae200b](https://github.com/tensorchord/envd/commit/2ae200bf51339b1ddb0b4474ee5b6d1c9deb459a) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.7.0 to 2.7.1 (#1454) * [29ffd89](https://github.com/tensorchord/envd/commit/29ffd895601fad818d5625a03d3e9034d2103ec7) feat: support envd run in local docker context (#1428) - * [890b712](https://github.com/tensorchord/envd/commit/890b71228b788949cf4266ddeee90027461fadc8) chore(deps): bump github.com/docker/cli from 23.0.0-rc.1+incompatible to 23.0.0-rc.3+incompatible (#1455) - * [a20aa01](https://github.com/tensorchord/envd/commit/a20aa01d35d5cf93cdc3513adfa321143175687e) chore(deps): bump github.com/onsi/gomega from 1.25.0 to 1.26.0 (#1453) - * [c781d85](https://github.com/tensorchord/envd/commit/c781d854e659497fbeb4be65fc92baa8fa8195f1) chore(deps): bump github.com/containerd/containerd from 1.6.14 to 1.6.16 (#1451) - * [08f6975](https://github.com/tensorchord/envd/commit/08f6975f2a62cbfa085b4dda0ad663bbc50eb5db) chore(deps): bump dependabot/fetch-metadata from 1.3.5 to 1.3.6 (#1450) - * [ba63c8f](https://github.com/tensorchord/envd/commit/ba63c8f29b688ecb6deccf0e5c9fa55875a296ce) chore(deps): bump github.com/spf13/viper from 1.14.0 to 1.15.0 (#1439) ### Contributors * Jinjing Zhou * Kaiyang Chen * Keming - * dependabot[bot] ## v0.3.10 (2023-01-25) * [efdd05f](https://github.com/tensorchord/envd/commit/efdd05f5219c92a5cbae14a57fb55199535b9cd4) fix: rm remote cache for v1 (#1447) * [f940354](https://github.com/tensorchord/envd/commit/f9403540e1efe08b8512a728f9cd0eb3232dfb76) feat: add shm size to start options (#1445) - * [b0320cb](https://github.com/tensorchord/envd/commit/b0320cb2b5f82bc164210c2995caa4ca8dbf50a2) chore(deps): bump github.com/onsi/gomega from 1.24.2 to 1.25.0 (#1442) - * [0a2d9af](https://github.com/tensorchord/envd/commit/0a2d9af669c2b6d8128fc1b83087f05e88b4d70e) chore(deps): bump golang.org/x/crypto from 0.2.0 to 0.5.0 (#1443) - * [34c3150](https://github.com/tensorchord/envd/commit/34c3150db5e23dcc25b3270c396c0b1e62a0ab74) chore(deps): bump pypa/cibuildwheel from 2.11.4 to 2.12.0 (#1438) * [83c63c7](https://github.com/tensorchord/envd/commit/83c63c7dbce98cd2db53fc317a5366d78ecb5bfd) fix: pip install requirements.txt (#1434) * [f47f7a3](https://github.com/tensorchord/envd/commit/f47f7a353cd84dc03f577116bac33090ab8f0eac) doc: add init and daemon debug guide (#1435) * [b6d49c6](https://github.com/tensorchord/envd/commit/b6d49c64290e32b4c92be009f40371b296899573) feat: add `make` as a default system package (#1433) @@ -301,7 +198,6 @@ * Ce Gao * Keming * Wei Zhang - * dependabot[bot] ## v0.3.9 (2023-01-18) @@ -321,9 +217,7 @@ * [0f556d0](https://github.com/tensorchord/envd/commit/0f556d0b630df70c17b98f5444ba3dcd67abd0bd) fix: change default channel to `defaults` (#1427) * [949f188](https://github.com/tensorchord/envd/commit/949f188a074fffef300cc4489806317357931d0b) LLM inference example (#1425) - * [46f5996](https://github.com/tensorchord/envd/commit/46f59963dfe10c369b21320f754b20721cd085c1) chore(deps): bump github.com/tensorchord/envd-server from 0.0.23 to 0.0.24 (#1388) * [b93cd48](https://github.com/tensorchord/envd/commit/b93cd48b1e87642677d1a34120427b7b28192d90) feat: add checksum check for Julia archive file (#1419) - * [c87846e](https://github.com/tensorchord/envd/commit/c87846e68f2eb0220e0c8698e94894c82fb04491) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.6.1 to 2.7.0 (#1418) * [64b5a0a](https://github.com/tensorchord/envd/commit/64b5a0ab5f7799ba3210bf0afa1c5521d078d963) Optimize the logic of adding entry in wsl (#1414) * [e1bbd56](https://github.com/tensorchord/envd/commit/e1bbd565b266e785ebb05b0e6227161f12bb8b14) feat: support trust the pypi index in v1, add api doc (#1412) * [d1179a6](https://github.com/tensorchord/envd/commit/d1179a6cbaece9d5627fa76dd8a1d464cb253f0e) fix: v1 gid on darwin (#1411) @@ -334,7 +228,6 @@ * Jinjing Zhou * Keming - * dependabot[bot] * li mengyang * x0oo0x @@ -347,7 +240,6 @@ * [b4c08c8](https://github.com/tensorchord/envd/commit/b4c08c835b427a426d20681c4e6093e4ce3c786d) Initial e2e test for R language environment (#1342) * [3f7d699](https://github.com/tensorchord/envd/commit/3f7d699c9dfc36cb85433a8796d745774a91f1db) Refactor R package installation (#1381) * [aab7f53](https://github.com/tensorchord/envd/commit/aab7f53d2cf57549598c73040d98165fb2ecf5cb) feat: `envd exec` get runtime graph from container labels (#1392) - * [ede2013](https://github.com/tensorchord/envd/commit/ede201335b95d5071224f9aeeb03d81830472582) chore(deps): bump golang.org/x/term from 0.3.0 to 0.4.0 (#1389) * [7034c5d](https://github.com/tensorchord/envd/commit/7034c5dade81293572fdb604d0c323461a13772b) Revert "fix: increase the default buildkit cache limit" (#1386) * [f56d95a](https://github.com/tensorchord/envd/commit/f56d95a2eb66bef6044d5653983f714cd0df6da3) fix: increase the default buildkit cache limit (#1382) * [3c38b5e](https://github.com/tensorchord/envd/commit/3c38b5e62753d51ec470586b44ada1b14af6eb64) fix: v0 user passwd, add test for root permission (#1379) @@ -360,7 +252,6 @@ * Ce Gao * Keming * Weixiao Huang - * dependabot[bot] * x0oo0x ## v0.3.5 (2023-01-03) @@ -388,15 +279,12 @@ ## v0.3.2 (2023-01-03) * [095237d](https://github.com/tensorchord/envd/commit/095237dee602eb76dedf9041370173eee367d467) fix: fix nil pointer dereference when exiting shell (#1364) - * [aae5e27](https://github.com/tensorchord/envd/commit/aae5e27feaa06436fa81c3dc414b28b6b7e21a3b) chore(deps): bump github.com/mattn/go-isatty from 0.0.16 to 0.0.17 (#1361) * [b0b5d71](https://github.com/tensorchord/envd/commit/b0b5d71ccb463a7e26e6f3f0cf2ce5d094731367) fix: remove duplicated config and fix Dockerfile pattern (#1362) * [bb0fe7c](https://github.com/tensorchord/envd/commit/bb0fe7cac7d6194f2fe095a5aa61bf68a96a564d) Fix: Remove unnecessary user switching code when installing R package (#1351) * [4f406ce](https://github.com/tensorchord/envd/commit/4f406ce057c36e1c45ee1e5d2b4c27a8120796ca) fix: fix broken link (#1349) * [3093e1a](https://github.com/tensorchord/envd/commit/3093e1a4c64ff1cbff58f656124951d561445a73) fix: v1 change default user group to 1000:1000 (#1347) * [571abfe](https://github.com/tensorchord/envd/commit/571abfede9e2166ba5fbefaaf046a4ff926309ad) feat: add --format for commands to output json (#1323) * [296680c](https://github.com/tensorchord/envd/commit/296680ce6a02d5a0605936a49de250ba236baaa5) fix: install black[jupyter] for CI check (#1343) - * [cb33a65](https://github.com/tensorchord/envd/commit/cb33a656801a2f6b6cd04f4b4631ff17b3a2d3a8) chore(deps): bump github.com/tensorchord/envd-server from 0.0.21 to 0.0.23 (#1341) - * [722fca1](https://github.com/tensorchord/envd/commit/722fca1d11a5519a79f6be29ca48ef67a2414b55) chore(deps): bump pypa/cibuildwheel from 2.11.3 to 2.11.4 (#1340) * [7426973](https://github.com/tensorchord/envd/commit/7426973cc33dd56a3967a4c2163575a92359a963) doc: add pytorch2 example (#1339) * [e1cb495](https://github.com/tensorchord/envd/commit/e1cb4953d008eb3ed0816e667a59595da9204a3c) fix: doc url in envd github issue page (#1338) * [122021d](https://github.com/tensorchord/envd/commit/122021da173e62ddbada683ddba4dfd8eb0432cc) refact: change Shlex(fmt.Sprintf to Shlexf, use ` instead of escape \" (#1337) @@ -407,7 +295,6 @@ * Keming * Zhizhen He * cutecutecat - * dependabot[bot] * x0oo0x * xing0821 * xxchan @@ -418,17 +305,14 @@ * [49b3236](https://github.com/tensorchord/envd/commit/49b323609c52d6550b150e5cb44dc941d480d0d0) feat(login): Refactor logic with the new key API (#1333) * [1cd917d](https://github.com/tensorchord/envd/commit/1cd917dbe3b1fede67cfe9dd216e86622790b007) fix: upgrade horust to support arm (#1330) * [d39adc8](https://github.com/tensorchord/envd/commit/d39adc851a8e967e56221f4ac09775fc09f686af) refactor: combine code with the same logic (#1326) - * [d1990ec](https://github.com/tensorchord/envd/commit/d1990ec5b8677d9c588919c887c5a304b01b3703) chore(deps): bump github.com/onsi/gomega from 1.24.1 to 1.24.2 (#1320) * [c598834](https://github.com/tensorchord/envd/commit/c598834ee34abc8675e19d2fb31bacbcdaa1acdb) fix: conda meta permission for envd user (#1325) * [0a48acd](https://github.com/tensorchord/envd/commit/0a48acd355bfe6c62380f7729991993063ca2991) feat: produce ABI-agnostic wheels for python (#1324) - * [8042997](https://github.com/tensorchord/envd/commit/80429972639cf57d8127a7d5bd8d71ad41834d89) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.6.0 to 2.6.1 (#1321) ### Contributors * Ce Gao * Frost Ming * Keming - * dependabot[bot] * rrain7 * x0oo0x @@ -455,10 +339,6 @@ * [935e55d](https://github.com/tensorchord/envd/commit/935e55d5907378ab967d4c767bff7ec3b0c0909a) Interactive cli (#1294) * [3800ea2](https://github.com/tensorchord/envd/commit/3800ea2971ea260431fd8fc5ab22ad9b069d8251) fix: add PATH when switch to envd user (#1295) * [382a6c1](https://github.com/tensorchord/envd/commit/382a6c150e30ea883c3229b37d851d85ead737bc) feat: install pypi packages in different groups (#1289) - * [c66f201](https://github.com/tensorchord/envd/commit/c66f201c90a3ffee039a13679c41e792a1ebeac5) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.5.1 to 2.6.0 (#1293) - * [d15c3ca](https://github.com/tensorchord/envd/commit/d15c3caf450009c4e94172b45474d8e268ac76e8) chore(deps): bump golang.org/x/term from 0.2.0 to 0.3.0 (#1292) - * [50a8bb6](https://github.com/tensorchord/envd/commit/50a8bb620c178adaa80ce59edea364759afbd5bc) chore(deps): bump github.com/urfave/cli/v2 from 2.23.6 to 2.23.7 (#1291) - * [99e8a15](https://github.com/tensorchord/envd/commit/99e8a15fd240d83810e2f4414bcb66d3addcb355) chore(deps): bump pypa/cibuildwheel from 2.11.2 to 2.11.3 (#1290) * [f7f2b34](https://github.com/tensorchord/envd/commit/f7f2b34a80f616ae4db1c0fdb1c01f6583f4821f) Add config.owner to v1 syntax for setting UID and GID (#1286) * [5c4aae9](https://github.com/tensorchord/envd/commit/5c4aae93f797a6ce504f3d09f6395e5492627703) fix: Remove graph access in ssh (#1281) * [56d25a0](https://github.com/tensorchord/envd/commit/56d25a01dd37b2c069ae9b4492811c8571a1e714) feat: Support specify resource requirement when creating the environment (#1268) @@ -467,8 +347,6 @@ * [8651444](https://github.com/tensorchord/envd/commit/865144482b380cf5d3d6d30dff55a45087aeabc4) Remove incorrect `sudo` command when installing system package (#1273) * [235dde9](https://github.com/tensorchord/envd/commit/235dde905643e2eed7ba91e10423b92598d6a12a) fix: Remove ir direct access in ssh (#1271) * [06b4880](https://github.com/tensorchord/envd/commit/06b488035a5c21a74c8727fc7d8e85f404a2bb00) feat: Add JWT and user/pwd in envd server context (#1243) - * [7badc67](https://github.com/tensorchord/envd/commit/7badc67fcf9be813d2124aed7f18acd855847e63) chore(deps): bump github.com/tensorchord/envd-server from 0.0.11 to 0.0.12 (#1266) - * [cefd1df](https://github.com/tensorchord/envd/commit/cefd1dfa8101a363a762921ec7439f64d1463e2a) chore(deps): bump github.com/urfave/cli/v2 from 2.23.5 to 2.23.6 (#1264) ### Contributors @@ -477,7 +355,6 @@ * Frost Ming * Jinjing Zhou * Keming - * dependabot[bot] * nullday * x0oo0x @@ -527,18 +404,14 @@ ## v0.2.5-rc.1 (2022-11-28) - * [a4dad9b](https://github.com/tensorchord/envd/commit/a4dad9b212c41e07175f201e067f891c76277843) chore(deps): bump github.com/tensorchord/envd-server from 0.0.9 to 0.0.10 (#1235) ### Contributors - * dependabot[bot] ## v0.2.5-alpha.8 (2022-11-23) * [2f37901](https://github.com/tensorchord/envd/commit/2f379016002e58c3a87b2a8b2e2afd6ffc6ab9b9) feat: support add new dir to runtime PATH (#1218) * [e85f062](https://github.com/tensorchord/envd/commit/e85f0620ad76379e22fdf36f70697b1f8d71444b) feat: merge coverage file and report to goverall (#1211) - * [7f10440](https://github.com/tensorchord/envd/commit/7f10440a8163f4d23964783fdf83c2e03c66e4f9) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#1213) - * [6db3f15](https://github.com/tensorchord/envd/commit/6db3f152325b674ea67e24fc4ee694f99ea206c3) chore(deps): bump github.com/tensorchord/envd-server from 0.0.8 to 0.0.9 (#1212) * [5efb0b1](https://github.com/tensorchord/envd/commit/5efb0b12b98e3000d0ddc6ef015734e65411ac80) fix: only mkdir /home/envd/* when image==nil (#1208) * [8c8c3f3](https://github.com/tensorchord/envd/commit/8c8c3f33ada10013b350071a1a36529d993053c4) feat: add name to `envd envs describe` (#1201) @@ -547,7 +420,6 @@ * Alex Xi * Keming * cutecutecat - * dependabot[bot] ## v0.2.5-alpha.7 (2022-11-15) @@ -583,18 +455,11 @@ ## v0.2.5-alpha.3 (2022-11-14) - * [212f996](https://github.com/tensorchord/envd/commit/212f9966d12f2322fe8c97d14db093448399119e) chore(deps): bump github.com/urfave/cli/v2 from 2.23.4 to 2.23.5 (#1188) - * [c4854e8](https://github.com/tensorchord/envd/commit/c4854e842a7cee0f2600f5c6eb8d19ca3510369d) chore(deps): bump github.com/onsi/gomega from 1.24.0 to 1.24.1 (#1189) - * [62b7b2f](https://github.com/tensorchord/envd/commit/62b7b2f204aa5b53688a2b0356d8a746a5fac1e4) chore(deps): bump github.com/moby/buildkit from 0.10.5 to 0.10.6 (#1190) * [b1eb44e](https://github.com/tensorchord/envd/commit/b1eb44e4cc80b3422122429d3f29e5d7ffcaf3d6) fix: pre-create the workdir (#1174) * [66d9cb0](https://github.com/tensorchord/envd/commit/66d9cb061a033220814813a349fc12495927aef2) fix: Move user to image config (#1173) * [dd9dd30](https://github.com/tensorchord/envd/commit/dd9dd3083b363d1d698060255892e6a132b8182a) refact: move env to server (#1172) * [2d37b48](https://github.com/tensorchord/envd/commit/2d37b48736c5ba34ea0800c925c31c0c3ff40f13) fix stable diffusion demo via b/c huggingface api change (#1170) * [c364958](https://github.com/tensorchord/envd/commit/c364958c1d21d25a7cb782413f6666bd666f7dd1) feat: support envd-server image (#1150) - * [f9e7c67](https://github.com/tensorchord/envd/commit/f9e7c67a0f16c802fa2aa75a562f77e6f17baef9) chore(deps): bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#1164) - * [5c9ac69](https://github.com/tensorchord/envd/commit/5c9ac69a584463cf906b27d0ccd200403d7f4974) chore(deps): bump github.com/onsi/gomega from 1.23.0 to 1.24.0 (#1163) - * [d1de890](https://github.com/tensorchord/envd/commit/d1de8906326ee10a1021dbff80892d8f0c74e637) chore(deps): bump github.com/urfave/cli/v2 from 2.23.0 to 2.23.4 (#1162) - * [ad5ce11](https://github.com/tensorchord/envd/commit/ad5ce117bdc4433f8894c4b813748d33c6edbd96) chore(deps): bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 (#1161) * [6b7a0e9](https://github.com/tensorchord/envd/commit/6b7a0e94937d5e0532139d519e424ccb16bd9de1) fix: cuda tag in image cache (#1156) * [1af3449](https://github.com/tensorchord/envd/commit/1af3449ce72e218350c3d4fa19aee64f98ced970) fix: pre mkdir for runtime mount (#1153) @@ -602,7 +467,6 @@ * Ce Gao * Keming - * dependabot[bot] * xieydd ## v0.2.5-alpha.2 (2022-11-03) @@ -623,35 +487,23 @@ * [235dde9](https://github.com/tensorchord/envd/commit/235dde905643e2eed7ba91e10423b92598d6a12a) fix: Remove ir direct access in ssh (#1271) * [06b4880](https://github.com/tensorchord/envd/commit/06b488035a5c21a74c8727fc7d8e85f404a2bb00) feat: Add JWT and user/pwd in envd server context (#1243) - * [7badc67](https://github.com/tensorchord/envd/commit/7badc67fcf9be813d2124aed7f18acd855847e63) chore(deps): bump github.com/tensorchord/envd-server from 0.0.11 to 0.0.12 (#1266) - * [cefd1df](https://github.com/tensorchord/envd/commit/cefd1dfa8101a363a762921ec7439f64d1463e2a) chore(deps): bump github.com/urfave/cli/v2 from 2.23.5 to 2.23.6 (#1264) * [8594d10](https://github.com/tensorchord/envd/commit/8594d1044874ed2baa3bc74ef9b5e35f3766a6f7) fix: Update python setuptools to python3 (#1261) * [0042b24](https://github.com/tensorchord/envd/commit/0042b2481da98c6810e858069f769f3b7ef4808a) feat: add completion command (#1258) * [5cbed88](https://github.com/tensorchord/envd/commit/5cbed887e0aa6b0c766f48c0cf8effe85f49d20b) fix: put the binary under bin directly (#1254) * [c7fd12b](https://github.com/tensorchord/envd/commit/c7fd12b9047b5c59e555a3d083cdf7cdef1449d6) bug: Update envd-server version to 0.0.11 (#1245) - * [a4dad9b](https://github.com/tensorchord/envd/commit/a4dad9b212c41e07175f201e067f891c76277843) chore(deps): bump github.com/tensorchord/envd-server from 0.0.9 to 0.0.10 (#1235) * [2f37901](https://github.com/tensorchord/envd/commit/2f379016002e58c3a87b2a8b2e2afd6ffc6ab9b9) feat: support add new dir to runtime PATH (#1218) * [e85f062](https://github.com/tensorchord/envd/commit/e85f0620ad76379e22fdf36f70697b1f8d71444b) feat: merge coverage file and report to goverall (#1211) - * [7f10440](https://github.com/tensorchord/envd/commit/7f10440a8163f4d23964783fdf83c2e03c66e4f9) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.5.0 to 2.5.1 (#1213) - * [6db3f15](https://github.com/tensorchord/envd/commit/6db3f152325b674ea67e24fc4ee694f99ea206c3) chore(deps): bump github.com/tensorchord/envd-server from 0.0.8 to 0.0.9 (#1212) * [5efb0b1](https://github.com/tensorchord/envd/commit/5efb0b12b98e3000d0ddc6ef015734e65411ac80) fix: only mkdir /home/envd/* when image==nil (#1208) * [8c8c3f3](https://github.com/tensorchord/envd/commit/8c8c3f33ada10013b350071a1a36529d993053c4) feat: add name to `envd envs describe` (#1201) * [3fa3070](https://github.com/tensorchord/envd/commit/3fa307098a585b524804bd0beff6697e68440b42) feat: support build owner (#1202) * [5462d30](https://github.com/tensorchord/envd/commit/5462d30a556f91741b770e4b4b24c1fd639f5299) fix: release CI add runneradmin to docker group (#1199) * [731b6f8](https://github.com/tensorchord/envd/commit/731b6f8271a77096d9a29a03e353e0388f825485) fix: github action release cache command (#1197) * [4a7d6cc](https://github.com/tensorchord/envd/commit/4a7d6cca18d9a033c02c1ef235570f64ef987300) fix: daemon command (#1185) - * [212f996](https://github.com/tensorchord/envd/commit/212f9966d12f2322fe8c97d14db093448399119e) chore(deps): bump github.com/urfave/cli/v2 from 2.23.4 to 2.23.5 (#1188) - * [c4854e8](https://github.com/tensorchord/envd/commit/c4854e842a7cee0f2600f5c6eb8d19ca3510369d) chore(deps): bump github.com/onsi/gomega from 1.24.0 to 1.24.1 (#1189) - * [62b7b2f](https://github.com/tensorchord/envd/commit/62b7b2f204aa5b53688a2b0356d8a746a5fac1e4) chore(deps): bump github.com/moby/buildkit from 0.10.5 to 0.10.6 (#1190) * [b1eb44e](https://github.com/tensorchord/envd/commit/b1eb44e4cc80b3422122429d3f29e5d7ffcaf3d6) fix: pre-create the workdir (#1174) * [66d9cb0](https://github.com/tensorchord/envd/commit/66d9cb061a033220814813a349fc12495927aef2) fix: Move user to image config (#1173) * [dd9dd30](https://github.com/tensorchord/envd/commit/dd9dd3083b363d1d698060255892e6a132b8182a) refact: move env to server (#1172) * [2d37b48](https://github.com/tensorchord/envd/commit/2d37b48736c5ba34ea0800c925c31c0c3ff40f13) fix stable diffusion demo via b/c huggingface api change (#1170) * [c364958](https://github.com/tensorchord/envd/commit/c364958c1d21d25a7cb782413f6666bd666f7dd1) feat: support envd-server image (#1150) - * [f9e7c67](https://github.com/tensorchord/envd/commit/f9e7c67a0f16c802fa2aa75a562f77e6f17baef9) chore(deps): bump github.com/spf13/viper from 1.13.0 to 1.14.0 (#1164) - * [5c9ac69](https://github.com/tensorchord/envd/commit/5c9ac69a584463cf906b27d0ccd200403d7f4974) chore(deps): bump github.com/onsi/gomega from 1.23.0 to 1.24.0 (#1163) - * [d1de890](https://github.com/tensorchord/envd/commit/d1de8906326ee10a1021dbff80892d8f0c74e637) chore(deps): bump github.com/urfave/cli/v2 from 2.23.0 to 2.23.4 (#1162) - * [ad5ce11](https://github.com/tensorchord/envd/commit/ad5ce117bdc4433f8894c4b813748d33c6edbd96) chore(deps): bump dependabot/fetch-metadata from 1.3.4 to 1.3.5 (#1161) * [6b7a0e9](https://github.com/tensorchord/envd/commit/6b7a0e94937d5e0532139d519e424ccb16bd9de1) fix: cuda tag in image cache (#1156) * [1af3449](https://github.com/tensorchord/envd/commit/1af3449ce72e218350c3d4fa19aee64f98ced970) fix: pre mkdir for runtime mount (#1153) * [46d24fd](https://github.com/tensorchord/envd/commit/46d24fd1331b1b0e223cb2d2223e17d648080bf1) fix: horust cache (#1151) @@ -666,9 +518,6 @@ * [0bdca3c](https://github.com/tensorchord/envd/commit/0bdca3c2d54d0eea8ee6b3a14641ae5563971b0e) fix: Remove cwd in conda to enable remote cache (#1125) * [535e26a](https://github.com/tensorchord/envd/commit/535e26a0a0d9d3855317d34dcf209e4d8d08efe9) feat(debug): Add llb export (#1124) * [d693254](https://github.com/tensorchord/envd/commit/d693254c1a8b19e02aca85934818a4e7b6dde661) fix: Disable telemetry in CI (#1116) - * [3cba45e](https://github.com/tensorchord/envd/commit/3cba45e36496cd6010d9b07acbb0c7d34826f828) chore(deps): bump github.com/urfave/cli/v2 from 2.20.3 to 2.23.0 (#1119) - * [57a63e0](https://github.com/tensorchord/envd/commit/57a63e015c813a0a446768b00c83039923ce0df3) chore(deps): bump pypa/cibuildwheel from 2.11.1 to 2.11.2 (#1115) - * [77b3d84](https://github.com/tensorchord/envd/commit/77b3d84741f990e9cf0b3a8f9bd56abe40fcd895) chore(deps): bump github.com/onsi/gomega from 1.22.1 to 1.23.0 (#1117) ### Contributors @@ -679,7 +528,6 @@ * Jinjing Zhou * Keming * cutecutecat - * dependabot[bot] * nullday * tison * xieydd @@ -711,11 +559,6 @@ * [753fde3](https://github.com/tensorchord/envd/commit/753fde329e7da22837af27cddb48969947b9125b) fix:#1090 (#1092) * [1ddd513](https://github.com/tensorchord/envd/commit/1ddd513c03b78b8382d309c3a9fb162ae39973b9) feat(CLI): Support envd-server in up command (#1087) * [ab9fe2c](https://github.com/tensorchord/envd/commit/ab9fe2ce255ea18780310f37903b216853386589) feat: Support forward (#1014) - * [4cd6fef](https://github.com/tensorchord/envd/commit/4cd6fef5d6284538ea523011aac47feec8dcf36a) chore(deps): bump github.com/moby/buildkit from 0.10.4 to 0.10.5 (#1081) - * [a81bbb0](https://github.com/tensorchord/envd/commit/a81bbb0aab9b1a7d1bf37a0374884f34af386c3b) chore(deps): bump github.com/urfave/cli/v2 from 2.20.2 to 2.20.3 (#1078) - * [a89f466](https://github.com/tensorchord/envd/commit/a89f466517aec054c0e0c5a295f09b5e7b3c33b7) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc1 to 1.1.0-rc2 (#1077) - * [a209f79](https://github.com/tensorchord/envd/commit/a209f79d07b945c2a1a87972f191be7f4428d6c1) chore(deps): bump github.com/onsi/gomega from 1.21.1 to 1.22.1 (#1080) - * [a8a6339](https://github.com/tensorchord/envd/commit/a8a633928a5ec70f5deccbebf81619bb1dbe33da) chore(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1 (#1079) ### Contributors @@ -723,7 +566,6 @@ * Friends A * Jinjing Zhou * Yilong Li - * dependabot[bot] ## v0.2.4-alpha.15 (2022-10-21) @@ -770,11 +612,6 @@ * [cf78dd1](https://github.com/tensorchord/envd/commit/cf78dd131e869ad20fe67a4a1159d7bf69e6fb63) feat: Implement env client in envd engine (#1049) * [bc6255b](https://github.com/tensorchord/envd/commit/bc6255bc3d494be85afc7c132f2e48f72fffd0fa) example: Add torch profiler example (#1026) * [ded3fce](https://github.com/tensorchord/envd/commit/ded3fce1b481aab9c51c2f13dbb2d92288532da0) feat: add `envd down` as an alias for `envd destroy` (#1047) - * [9b8582d](https://github.com/tensorchord/envd/commit/9b8582d910e83288ef90ba45b599221341ad29f6) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.2.0 to 2.3.1 (#1039) - * [0ee19ed](https://github.com/tensorchord/envd/commit/0ee19ed79d3332a25082878ca19c1bc032072aef) chore(deps): bump pypa/cibuildwheel from 2.10.2 to 2.11.1 (#1036) - * [6ba7633](https://github.com/tensorchord/envd/commit/6ba763368d81035b0f13e5eb1549856ecaaa30d1) chore(deps): bump k8s.io/api from 0.25.2 to 0.25.3 (#1038) - * [0500dca](https://github.com/tensorchord/envd/commit/0500dca9b5174510c1c741ec1d9cfbf97d09a2e9) chore(deps): bump github.com/urfave/cli/v2 from 2.19.2 to 2.20.2 (#1037) - * [847f187](https://github.com/tensorchord/envd/commit/847f187b45983a56093dd962d5638dae5f260743) chore(deps): bump github.com/onsi/gomega from 1.21.1 to 1.22.1 (#1040) * [1fb2721](https://github.com/tensorchord/envd/commit/1fb272197f405c5ee9dcca46c82079095afa406d) bug: Fix flaky auth test (#1034) * [d0134d3](https://github.com/tensorchord/envd/commit/d0134d301eba153dcda0c79a3a23babf75a14434) fix(zsh): ignore inserting zsh-completion if system don't have zsh shell (#1025) * [ec92a29](https://github.com/tensorchord/envd/commit/ec92a295b835664d559f201ba2542a6a609a560d) feat: support using current directory name as env name in envd describe (#1033) @@ -784,7 +621,6 @@ * Ce Gao * Jinjing Zhou * Zhenzhen Zhao - * dependabot[bot] * wangxiaolei ## v0.2.4-alpha.10 (2022-10-14) @@ -801,9 +637,7 @@ * [46168da](https://github.com/tensorchord/envd/commit/46168dac70fb8cd9b841a32e35a414ad29ddfaa2) chore(test): Add test cases for pkg/home/auth.go (#1009) * [d87afda](https://github.com/tensorchord/envd/commit/d87afda9213fcb334ca55d247ba3c0663b7b180b) feat: Add envd-server runtime proposal (#303) * [fec7ada](https://github.com/tensorchord/envd/commit/fec7ada4efc2186fa5f858d5abe211a2beb2dfdd) fix: Remove hard code docker in envd engine init (#1000) - * [cf56f0d](https://github.com/tensorchord/envd/commit/cf56f0de7bfb05be47d4704c14f9bbb892a86d28) chore(deps): bump github.com/onsi/gomega from 1.20.2 to 1.21.1 (#997) * [a55470e](https://github.com/tensorchord/envd/commit/a55470e363b35b689649596b449b996ada701630) feat(build): detect if the current environment is running before building (#892) (#989) - * [d0219f2](https://github.com/tensorchord/envd/commit/d0219f2e3e999e27f334a39180031390a4554af9) chore(deps): bump github.com/urfave/cli/v2 from 2.17.1 to 2.19.2 (#998) ### Contributors @@ -814,7 +648,6 @@ * XRW * Yijiang Liu * Zhenzhen Zhao - * dependabot[bot] ## v0.2.4-alpha.9 (2022-10-09) @@ -834,8 +667,6 @@ * [17fedb8](https://github.com/tensorchord/envd/commit/17fedb8d2ae41318e2f705687c334b7e42413ab3) fix(ir): make sure default value won't be replaced with empty value (#970) * [c1ae887](https://github.com/tensorchord/envd/commit/c1ae887f12b23802363ac417c198e19983c5605f) feat(CLI): Support runner in context (#961) * [bf993e2](https://github.com/tensorchord/envd/commit/bf993e2cab44502abb74a79e732b74a5567b6194) refact: conda/mamba create/update env, fix user permissions (#933) - * [0e79fb9](https://github.com/tensorchord/envd/commit/0e79fb91b9f3770f2e5356fc8a10182dd31e2bdf) chore(deps): bump github.com/urfave/cli/v2 from 2.16.3 to 2.17.1 (#968) - * [c9045d2](https://github.com/tensorchord/envd/commit/c9045d24d412099a1ac0bf9b9acf78135157351d) chore(deps): bump dependabot/fetch-metadata from 1.3.3 to 1.3.4 (#967) ### Contributors @@ -843,7 +674,6 @@ * Keming * Tumushimire Yves * Weizhen Wang - * dependabot[bot] ## v0.2.4-alpha.7 (2022-10-01) @@ -890,14 +720,12 @@ ## v0.2.4-alpha.2 (2022-09-28) * [b704029](https://github.com/tensorchord/envd/commit/b70402917edf874a0a8e630664b637fa8c22cd53) feat(ir): all in llb (#941) - * [f5f70e0](https://github.com/tensorchord/envd/commit/f5f70e0de304b8ff4767cd935ab3d307ed5599a2) chore(deps): bump pypa/cibuildwheel from 2.10.1 to 2.10.2 (#936) * [bd69c3d](https://github.com/tensorchord/envd/commit/bd69c3df326f1f213472960c099dff0c6d35e41c) feat: Support envd-server (#932) ### Contributors * Ce Gao * Keming - * dependabot[bot] ## v0.2.4-alpha.1 (2022-09-21) @@ -908,9 +736,6 @@ ## v0.2.4 (2022-10-31) * [d693254](https://github.com/tensorchord/envd/commit/d693254c1a8b19e02aca85934818a4e7b6dde661) fix: Disable telemetry in CI (#1116) - * [3cba45e](https://github.com/tensorchord/envd/commit/3cba45e36496cd6010d9b07acbb0c7d34826f828) chore(deps): bump github.com/urfave/cli/v2 from 2.20.3 to 2.23.0 (#1119) - * [57a63e0](https://github.com/tensorchord/envd/commit/57a63e015c813a0a446768b00c83039923ce0df3) chore(deps): bump pypa/cibuildwheel from 2.11.1 to 2.11.2 (#1115) - * [77b3d84](https://github.com/tensorchord/envd/commit/77b3d84741f990e9cf0b3a8f9bd56abe40fcd895) chore(deps): bump github.com/onsi/gomega from 1.22.1 to 1.23.0 (#1117) * [197b6c6](https://github.com/tensorchord/envd/commit/197b6c612891f0b7bc95b4b1f12a7daacbe7e51f) feat: Add telemetry with the help of segment.io (#1113) * [dedd731](https://github.com/tensorchord/envd/commit/dedd73113214d68fd6f8421446fcf2ea8895252e) feat: Add listening_addr to expose fun (#1110) * [f672c8f](https://github.com/tensorchord/envd/commit/f672c8f67c9fd793427fb9ec556e767fdf1ef50b) feat: support build time run without mount host (#1109) @@ -925,11 +750,6 @@ * [753fde3](https://github.com/tensorchord/envd/commit/753fde329e7da22837af27cddb48969947b9125b) fix:#1090 (#1092) * [1ddd513](https://github.com/tensorchord/envd/commit/1ddd513c03b78b8382d309c3a9fb162ae39973b9) feat(CLI): Support envd-server in up command (#1087) * [ab9fe2c](https://github.com/tensorchord/envd/commit/ab9fe2ce255ea18780310f37903b216853386589) feat: Support forward (#1014) - * [4cd6fef](https://github.com/tensorchord/envd/commit/4cd6fef5d6284538ea523011aac47feec8dcf36a) chore(deps): bump github.com/moby/buildkit from 0.10.4 to 0.10.5 (#1081) - * [a81bbb0](https://github.com/tensorchord/envd/commit/a81bbb0aab9b1a7d1bf37a0374884f34af386c3b) chore(deps): bump github.com/urfave/cli/v2 from 2.20.2 to 2.20.3 (#1078) - * [a89f466](https://github.com/tensorchord/envd/commit/a89f466517aec054c0e0c5a295f09b5e7b3c33b7) chore(deps): bump github.com/opencontainers/image-spec from 1.1.0-rc1 to 1.1.0-rc2 (#1077) - * [a209f79](https://github.com/tensorchord/envd/commit/a209f79d07b945c2a1a87972f191be7f4428d6c1) chore(deps): bump github.com/onsi/gomega from 1.21.1 to 1.22.1 (#1080) - * [a8a6339](https://github.com/tensorchord/envd/commit/a8a633928a5ec70f5deccbebf81619bb1dbe33da) chore(deps): bump github.com/stretchr/testify from 1.8.0 to 1.8.1 (#1079) * [9faeebe](https://github.com/tensorchord/envd/commit/9faeebe27f47ce2ee1d99b04325eb41745390099) fix: Fix build.sh (#1072) * [ff30b3a](https://github.com/tensorchord/envd/commit/ff30b3a5a4b1ccdc089b601c1d4c2bfdd81ce61c) fix: Fix the file name typo (#1071) * [51b00fb](https://github.com/tensorchord/envd/commit/51b00fb189422b4791ef2c53cc80ac3a5067b67a) feat(context): Support unix context and daemonless (#1062) @@ -943,11 +763,6 @@ * [cf78dd1](https://github.com/tensorchord/envd/commit/cf78dd131e869ad20fe67a4a1159d7bf69e6fb63) feat: Implement env client in envd engine (#1049) * [bc6255b](https://github.com/tensorchord/envd/commit/bc6255bc3d494be85afc7c132f2e48f72fffd0fa) example: Add torch profiler example (#1026) * [ded3fce](https://github.com/tensorchord/envd/commit/ded3fce1b481aab9c51c2f13dbb2d92288532da0) feat: add `envd down` as an alias for `envd destroy` (#1047) - * [9b8582d](https://github.com/tensorchord/envd/commit/9b8582d910e83288ef90ba45b599221341ad29f6) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.2.0 to 2.3.1 (#1039) - * [0ee19ed](https://github.com/tensorchord/envd/commit/0ee19ed79d3332a25082878ca19c1bc032072aef) chore(deps): bump pypa/cibuildwheel from 2.10.2 to 2.11.1 (#1036) - * [6ba7633](https://github.com/tensorchord/envd/commit/6ba763368d81035b0f13e5eb1549856ecaaa30d1) chore(deps): bump k8s.io/api from 0.25.2 to 0.25.3 (#1038) - * [0500dca](https://github.com/tensorchord/envd/commit/0500dca9b5174510c1c741ec1d9cfbf97d09a2e9) chore(deps): bump github.com/urfave/cli/v2 from 2.19.2 to 2.20.2 (#1037) - * [847f187](https://github.com/tensorchord/envd/commit/847f187b45983a56093dd962d5638dae5f260743) chore(deps): bump github.com/onsi/gomega from 1.21.1 to 1.22.1 (#1040) * [1fb2721](https://github.com/tensorchord/envd/commit/1fb272197f405c5ee9dcca46c82079095afa406d) bug: Fix flaky auth test (#1034) * [d0134d3](https://github.com/tensorchord/envd/commit/d0134d301eba153dcda0c79a3a23babf75a14434) fix(zsh): ignore inserting zsh-completion if system don't have zsh shell (#1025) * [ec92a29](https://github.com/tensorchord/envd/commit/ec92a295b835664d559f201ba2542a6a609a560d) feat: support using current directory name as env name in envd describe (#1033) @@ -963,9 +778,7 @@ * [46168da](https://github.com/tensorchord/envd/commit/46168dac70fb8cd9b841a32e35a414ad29ddfaa2) chore(test): Add test cases for pkg/home/auth.go (#1009) * [d87afda](https://github.com/tensorchord/envd/commit/d87afda9213fcb334ca55d247ba3c0663b7b180b) feat: Add envd-server runtime proposal (#303) * [fec7ada](https://github.com/tensorchord/envd/commit/fec7ada4efc2186fa5f858d5abe211a2beb2dfdd) fix: Remove hard code docker in envd engine init (#1000) - * [cf56f0d](https://github.com/tensorchord/envd/commit/cf56f0de7bfb05be47d4704c14f9bbb892a86d28) chore(deps): bump github.com/onsi/gomega from 1.20.2 to 1.21.1 (#997) * [a55470e](https://github.com/tensorchord/envd/commit/a55470e363b35b689649596b449b996ada701630) feat(build): detect if the current environment is running before building (#892) (#989) - * [d0219f2](https://github.com/tensorchord/envd/commit/d0219f2e3e999e27f334a39180031390a4554af9) chore(deps): bump github.com/urfave/cli/v2 from 2.17.1 to 2.19.2 (#998) * [b2a9018](https://github.com/tensorchord/envd/commit/b2a90188c012fa186de2ecb7b1aa534062681020) feat: Support cli argument for host key (#992) * [91ea50c](https://github.com/tensorchord/envd/commit/91ea50cd74e36f2d0d966d2b6a1ddea0ad15c43b) bug: fix pypi package information (#959) * [0be9969](https://github.com/tensorchord/envd/commit/0be9969471f8358f1cc283215ddf8e4cfcecebad) fix: Remove dump checkout and remove pre-commit (#982) @@ -974,8 +787,6 @@ * [17fedb8](https://github.com/tensorchord/envd/commit/17fedb8d2ae41318e2f705687c334b7e42413ab3) fix(ir): make sure default value won't be replaced with empty value (#970) * [c1ae887](https://github.com/tensorchord/envd/commit/c1ae887f12b23802363ac417c198e19983c5605f) feat(CLI): Support runner in context (#961) * [bf993e2](https://github.com/tensorchord/envd/commit/bf993e2cab44502abb74a79e732b74a5567b6194) refact: conda/mamba create/update env, fix user permissions (#933) - * [0e79fb9](https://github.com/tensorchord/envd/commit/0e79fb91b9f3770f2e5356fc8a10182dd31e2bdf) chore(deps): bump github.com/urfave/cli/v2 from 2.16.3 to 2.17.1 (#968) - * [c9045d2](https://github.com/tensorchord/envd/commit/c9045d24d412099a1ac0bf9b9acf78135157351d) chore(deps): bump dependabot/fetch-metadata from 1.3.3 to 1.3.4 (#967) * [c22408c](https://github.com/tensorchord/envd/commit/c22408c8f3b87ef959bda7d7681203ffd8d6212c) fix(ir): `apt install` and `conda env create` cache (#962) * [006f653](https://github.com/tensorchord/envd/commit/006f6538396b47b1bcab2a0d53ec9dae0221c8f5) feat: envd-sshd can read public key path from environment variable (#954) * [0b73548](https://github.com/tensorchord/envd/commit/0b7354868943f9e4ea189be18eeea534959b5d6c) example: Use torch in mnist example (#927) @@ -983,14 +794,10 @@ * [236cd0b](https://github.com/tensorchord/envd/commit/236cd0be8cdfa9e4731d3b69cec7027001c8770b) fix: version tag in build.sh (#947) * [2eef587](https://github.com/tensorchord/envd/commit/2eef587b44dfe77828570bac8a3e2a7def61c5e1) fix: r & julia sshd image (#945) * [b704029](https://github.com/tensorchord/envd/commit/b70402917edf874a0a8e630664b637fa8c22cd53) feat(ir): all in llb (#941) - * [f5f70e0](https://github.com/tensorchord/envd/commit/f5f70e0de304b8ff4767cd935ab3d307ed5599a2) chore(deps): bump pypa/cibuildwheel from 2.10.1 to 2.10.2 (#936) * [bd69c3d](https://github.com/tensorchord/envd/commit/bd69c3df326f1f213472960c099dff0c6d35e41c) feat: Support envd-server (#932) * [171b82f](https://github.com/tensorchord/envd/commit/171b82fcbac1da9543b9acda1911d110c322d802) fix: e2e doc test (#926) * [ce36545](https://github.com/tensorchord/envd/commit/ce36545d4865a6062ab4b6332a0e26e0d7030db2) feat(cli): rm image when destroying the env (#925) * [eecc7cf](https://github.com/tensorchord/envd/commit/eecc7cf48cf354ef3d72f17dfcf1d6f19bf90b85) feat: informative error message (#859) - * [a3fd464](https://github.com/tensorchord/envd/commit/a3fd4649f83f95d4e349348e4367bf564447780f) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.1.6 to 2.2.0 (#919) - * [756c92d](https://github.com/tensorchord/envd/commit/756c92d48cb819149be5520948de122b687a25aa) chore(deps): bump github.com/urfave/cli/v2 from 2.16.2 to 2.16.3 (#918) - * [b5acc08](https://github.com/tensorchord/envd/commit/b5acc08d46b6b84a0c57d19a2e1b62e247785bd4) chore(deps): bump pypa/cibuildwheel from 2.9.0 to 2.10.1 (#917) ### Contributors @@ -1005,7 +812,6 @@ * Yijiang Liu * Yilong Li * Zhenzhen Zhao - * dependabot[bot] * nullday * wangxiaolei @@ -1031,60 +837,6 @@ ### Contributors -## v0.2.0-beta.1 (2022-09-27) - - -### Contributors - - -## v0.2.0-beta6 (2022-09-28) - - * [9046f3b](https://github.com/tensorchord/envd/commit/9046f3b1e0bd6e990e0b651584d042a585fd17c8) fix gorlease v - * [9fea9e8](https://github.com/tensorchord/envd/commit/9fea9e8b1944acf82ac81d07874d7b2d22b4ce97) cache gpu - * [c7917a6](https://github.com/tensorchord/envd/commit/c7917a607553338b58a4d40af1a3262cd5618bb8) use git tag - * [c5aeec6](https://github.com/tensorchord/envd/commit/c5aeec6ee82fdeb2d6da2ecc0f5d3baf1093e918) fix ref bug - -### Contributors - - * Keming - -## v0.2.0-beta5 (2022-09-27) - - * [86f0b17](https://github.com/tensorchord/envd/commit/86f0b170902275d9320de819cfd708d6fd797015) fix ci secret - -### Contributors - - * Keming - -## v0.2.0-beta4 (2022-09-27) - - * [5cb30f3](https://github.com/tensorchord/envd/commit/5cb30f33067c3334435ade69a5c082a870a63a70) only run some ci in tensorchord - * [cfefb15](https://github.com/tensorchord/envd/commit/cfefb15c7120b04bb711ee4a7f84e0803fbae487) fix ci yml - * [84c80be](https://github.com/tensorchord/envd/commit/84c80be8cb4f753a2131fa671569925bd9c1bf7f) fix ci - * [cea390d](https://github.com/tensorchord/envd/commit/cea390ddf1a61358ade9cebbe2f4fdc71a7233fe) del python dockerfile - * [2a45a8f](https://github.com/tensorchord/envd/commit/2a45a8f2f918288c3d862597c4c94566f9138773) cuda version - * [5e407d0](https://github.com/tensorchord/envd/commit/5e407d0eb1a73cac86721b66c2bed290d35ac76e) delete outdated comments - * [16ca22f](https://github.com/tensorchord/envd/commit/16ca22f7d2e1f02060f299c4a69c74db647ef843) add llb log - * [7327c13](https://github.com/tensorchord/envd/commit/7327c13c32ff897160b40e49eb70b884589b5bd1) copy envd-sshd - * [f58e55b](https://github.com/tensorchord/envd/commit/f58e55ba4b52b7b9efa1a4669e5f5b11b364b7a0) change to docker hub - * [0863ac5](https://github.com/tensorchord/envd/commit/0863ac5c6ea050dd5832d54c6dd90f80b5adf3d4) change python dockerfile to llb - * [bd69c3d](https://github.com/tensorchord/envd/commit/bd69c3df326f1f213472960c099dff0c6d35e41c) feat: Support envd-server (#932) - * [171b82f](https://github.com/tensorchord/envd/commit/171b82fcbac1da9543b9acda1911d110c322d802) fix: e2e doc test (#926) - * [ce36545](https://github.com/tensorchord/envd/commit/ce36545d4865a6062ab4b6332a0e26e0d7030db2) feat(cli): rm image when destroying the env (#925) - * [eecc7cf](https://github.com/tensorchord/envd/commit/eecc7cf48cf354ef3d72f17dfcf1d6f19bf90b85) feat: informative error message (#859) - * [a3fd464](https://github.com/tensorchord/envd/commit/a3fd4649f83f95d4e349348e4367bf564447780f) chore(deps): bump github.com/onsi/ginkgo/v2 from 2.1.6 to 2.2.0 (#919) - * [756c92d](https://github.com/tensorchord/envd/commit/756c92d48cb819149be5520948de122b687a25aa) chore(deps): bump github.com/urfave/cli/v2 from 2.16.2 to 2.16.3 (#918) - * [b5acc08](https://github.com/tensorchord/envd/commit/b5acc08d46b6b84a0c57d19a2e1b62e247785bd4) chore(deps): bump pypa/cibuildwheel from 2.9.0 to 2.10.1 (#917) - * [c3c0b4e](https://github.com/tensorchord/envd/commit/c3c0b4e33ab696c3863632d0d4179f8211813fcb) fix: Use macos 11 (#912) - * [6721a88](https://github.com/tensorchord/envd/commit/6721a88aa1e2a97bfd3060e3168ab15b61f25609) chore(goreleaser): Skip homebrew (#909) - -### Contributors - - * Ce Gao - * Jinjing Zhou - * Keming - * dependabot[bot] - ## v0.2.0-alpha.22 (2022-09-16) * [4707bfe](https://github.com/tensorchord/envd/commit/4707bfeaea030a48c5601bffb87ff034e4d1b413) fix: Fix jupyter in root (#900) @@ -1094,30 +846,16 @@ * [2e8b5d5](https://github.com/tensorchord/envd/commit/2e8b5d5d4756b5c02c6d3e846b5be093fd6394b1) fix: include update repo (#885) * [eb2cdd1](https://github.com/tensorchord/envd/commit/eb2cdd1a65321a1530f59190cd40560e6c31d5a3) bug: Fix detach instruction message (#882) * [8a02b26](https://github.com/tensorchord/envd/commit/8a02b264ac16318c5d54660ca883414ef7a15cad) refact: add envd home path func (#880) - * [63daa5e](https://github.com/tensorchord/envd/commit/63daa5e870e5ea24c3f6e881e4932da2334688dc) chore(deps): bump github.com/spf13/viper from 1.12.0 to 1.13.0 (#875) - * [aa53bdb](https://github.com/tensorchord/envd/commit/aa53bdb478645863dae60ca37f1ebdbc7a564c56) chore(deps): bump github.com/urfave/cli/v2 from 2.14.0 to 2.16.2 (#874) ### Contributors * Ce Gao * Jinjing Zhou * Keming - * dependabot[bot] ## v0.2.0-alpha.21 (2022-09-12) - * [ddf3bdc](https://github.com/tensorchord/envd/commit/ddf3bdc8dd859683d7539d3c7f226b82cece40e7) chore(deps): bump actions/setup-go from 2 to 3 (#873) - * [7220958](https://github.com/tensorchord/envd/commit/72209583b941c4eb87b282004f7c8a1ae57410ae) chore(deps): bump actions/checkout from 2 to 3 (#872) * [f1b3fe5](https://github.com/tensorchord/envd/commit/f1b3fe5029091cffc0a1022b665d585132c5a8d8) chore(CLI): test new release for envd-sshd (#866) - -### Contributors - - * Yuedong Wu - * dependabot[bot] - -## v0.2.0-alpha.20 (2022-09-11) - - * [b38c5de](https://github.com/tensorchord/envd/commit/b38c5de82aac50fe085cd48d2111f7f5d241b6d7) chore(CLI): test new release for envd-sshd (#866) * [49d79fb](https://github.com/tensorchord/envd/commit/49d79fb17bee4a2baaeadd500607cba7d8426b28) fix: Update readme (#865) * [d7995a7](https://github.com/tensorchord/envd/commit/d7995a7171cbe48a65aad3e3b56077ffee9a625a) feat(lang): io.http download files to extra_source (#858) * [0d3b42f](https://github.com/tensorchord/envd/commit/0d3b42fe4f33241742986030a45431a5f068dc75) feat: Support HTTP PROXY (#857) @@ -1135,20 +873,15 @@ * [ecb9e26](https://github.com/tensorchord/envd/commit/ecb9e2626e65b5e1f647d7385142c10677f2d7eb) refact: unify the path env (#855) * [8056fda](https://github.com/tensorchord/envd/commit/8056fda28febfe6cbe64502159b302b670970517) feat: add runtime graph to image label (#815) * [6ad1d4c](https://github.com/tensorchord/envd/commit/6ad1d4ca2085317850e9726910bc3024b743439e) refact: apt_source, io, config mode (#853) - * [07e2dc0](https://github.com/tensorchord/envd/commit/07e2dc0e6d4d7f3be2debf79389a792964e727b1) chore(deps): bump github.com/gliderlabs/ssh from 0.3.4 to 0.3.5 (#849) ### Contributors * Jinjing Zhou * Keming - * dependabot[bot] * nullday ## v0.2.0-alpha.18 (2022-09-06) - * [c0ba31a](https://github.com/tensorchord/envd/commit/c0ba31adc231d09600892f9445320df8eb84947b) chore(deps): bump github.com/onsi/gomega from 1.20.1 to 1.20.2 (#846) - * [13bc9a6](https://github.com/tensorchord/envd/commit/13bc9a61c4255215661c724fb7c54f2b81642a21) chore(deps): bump github.com/urfave/cli/v2 from 2.11.2 to 2.14.0 (#845) - * [11966f8](https://github.com/tensorchord/envd/commit/11966f8c0f997f57c45979d7857cac48ad1d1e5b) chore(deps): bump github.com/docker/go-units from 0.4.0 to 0.5.0 (#848) * [7ba3b3f](https://github.com/tensorchord/envd/commit/7ba3b3fa6b716efd3398a7cb3e533e915129717d) feat(cli): add msg when detach from container (#841) * [7fc9f34](https://github.com/tensorchord/envd/commit/7fc9f34d333b22013e847fd2c2312d18fb861068) fix: Update demo (#840) * [190ee76](https://github.com/tensorchord/envd/commit/190ee7635f0d9bbdee6c8b53d53a72dd8ca4e619) feat(lang): install.python_packages(local_wheels=[]) (#838) @@ -1158,15 +891,12 @@ * [404de31](https://github.com/tensorchord/envd/commit/404de3101cece0497084412433cf877f66cf5ee2) feat(lang): init py env by generating the bulid.envd (#827) * [36b1231](https://github.com/tensorchord/envd/commit/36b123142385d20fb7f7c1106c15c02f79ed4742) bug: fix permission issue when pip install from git repo (#829) * [1dcada4](https://github.com/tensorchord/envd/commit/1dcada4403d0c0bf8e916fc67b62c174f66df3d3) feat(build): Mount local build context into the run command (#822) - * [f70a11c](https://github.com/tensorchord/envd/commit/f70a11c5f251b8ed0f0f42cd422b4b93efabd4a7) chore(deps): bump github.com/onsi/gomega from 1.20.0 to 1.20.1 (#821) - * [3b440c6](https://github.com/tensorchord/envd/commit/3b440c60c59ee65444a92aa91e295be9be2125b0) chore(deps): bump github.com/moby/buildkit from 0.10.3 to 0.10.4 (#820) ### Contributors * Ce Gao * Jinjing Zhou * Keming - * dependabot[bot] ## v0.2.0-alpha.17 (2022-08-26) @@ -1208,8 +938,6 @@ * [2f82fa5](https://github.com/tensorchord/envd/commit/2f82fa5ab884671ba2a5058d38d205cbd20bce1f) proposal: daemon process (#769) * [d06b878](https://github.com/tensorchord/envd/commit/d06b8786e2963f4bf5cc92b90fdcc80621a4bd5e) doc: update python api doc (#759) * [ce2e8b2](https://github.com/tensorchord/envd/commit/ce2e8b2b4e755b52892d9b3597489daae19f1dad) fix: Remove empty token arg (#772) - * [8ab89b9](https://github.com/tensorchord/envd/commit/8ab89b967caa104ad839a83d7d9ece186eb80918) chore(deps): bump github.com/urfave/cli/v2 from 2.11.1 to 2.11.2 (#775) - * [3a6b127](https://github.com/tensorchord/envd/commit/3a6b12772b956eb31b6ccc6c31e62efbc3feb6e3) chore(deps): bump pypa/cibuildwheel from 2.8.1 to 2.9.0 (#774) * [ec8cae1](https://github.com/tensorchord/envd/commit/ec8cae17b26de61bbb73026540db56505cffb2a8) fix: remove unnecessary if statement (#773) ### Contributors @@ -1218,7 +946,6 @@ * Keming * Wei Zhang * Zhizhen He - * dependabot[bot] ## v0.2.0-alpha.14 (2022-08-12) @@ -1313,11 +1040,6 @@ * [b3ee633](https://github.com/tensorchord/envd/commit/b3ee6334a54e7d89b3f2631631c112c1d5ecac6a) fix: Fix lint issues in conda env yaml feature PR (#679) * [a796a12](https://github.com/tensorchord/envd/commit/a796a129d83e5c707bb9d0c1c32295208b136495) feat(lang): Support env.yaml in conda_packages (#674) * [af3e78d](https://github.com/tensorchord/envd/commit/af3e78d6733f53f5d31eda045725c0af599aefa6) feature: add label ai.tensorchord.envd.build.manifestBytecodeHash to image for cache robust (#661) - * [3044002](https://github.com/tensorchord/envd/commit/30440022266b908adbb790e59c6696b36bf92b28) chore(deps): bump github.com/onsi/gomega from 1.19.0 to 1.20.0 (#657) - * [400fd7f](https://github.com/tensorchord/envd/commit/400fd7f8af0a04d1d0aa5fd7f047fea59172a7ef) chore(deps): bump github.com/urfave/cli/v2 from 2.11.0 to 2.11.1 (#655) - * [30e8caf](https://github.com/tensorchord/envd/commit/30e8cafc80b04b1bfa6e4d9d2ba273928c8b3919) chore(deps): bump actions/upload-artifact from 2 to 3 (#654) - * [04360d6](https://github.com/tensorchord/envd/commit/04360d63ba984a1a58faaf300d0cee64269d442a) chore(deps): bump pypa/cibuildwheel from 2.8.0 to 2.8.1 (#653) - * [de6c59e](https://github.com/tensorchord/envd/commit/de6c59e730da4520bccc747bb941bb12ced913d7) chore(deps): bump github.com/sirupsen/logrus from 1.8.1 to 1.9.0 (#656) * [62091a4](https://github.com/tensorchord/envd/commit/62091a460b5502d24fa57a04ad19cf273c832832) fix(build): Fix image config (#651) * [4c1df28](https://github.com/tensorchord/envd/commit/4c1df286df7c3d5c4a99b4bbc5958f86d08e0738) fix: context create with 'use' (#652) * [6f05072](https://github.com/tensorchord/envd/commit/6f05072f1f2a72b55d8e2bac468707219ceb30b4) feat(CLI): Support cache (#648) @@ -1327,7 +1049,6 @@ * Ce Gao * Keming - * dependabot[bot] * nullday * wyq @@ -1337,13 +1058,11 @@ * [890119d](https://github.com/tensorchord/envd/commit/890119d119e7becf9f39f392aa053ae1e70c77c0) fix: check manifest and image update in new gateway buildfunc (#624) * [c8471db](https://github.com/tensorchord/envd/commit/c8471db20f0a7e48c2c8346b3ab88637445200f5) support buildkit TCP socket (#599) * [ef8a90d](https://github.com/tensorchord/envd/commit/ef8a90df3bc1a3009381eb3fd10767f468fcefc2) feat: Refactor with Builder.Options (#615) - * [2a88ad1](https://github.com/tensorchord/envd/commit/2a88ad120b2a24b5095883a1e18de55189ff643f) chore(deps): bump github.com/urfave/cli/v2 from 2.10.3 to 2.11.0 (#610) ### Contributors * Ce Gao * Keming - * dependabot[bot] * nullday ## v0.2.0-alpha.6 (2022-07-15) @@ -1357,14 +1076,12 @@ * [fa041a8](https://github.com/tensorchord/envd/commit/fa041a849dde7f61f82fa2afdf105e45efc888ef) fix: Pre-mkdir the .cache directory of user envd (#592) * [54dfc52](https://github.com/tensorchord/envd/commit/54dfc52f4adc5cbce5de806dc6186e39adf21e0d) bug: fix missing function in example mnist (#589) * [00249bb](https://github.com/tensorchord/envd/commit/00249bbd2330088dc584015353837917bd557503) Use DefaultText in up.go (#587) - * [302e449](https://github.com/tensorchord/envd/commit/302e4490992d5f74bf5a9e08293cfb42a89e0367) chore(deps): bump pypa/cibuildwheel from 2.7.0 to 2.8.0 (#583) ### Contributors * Ce Gao * Guangyang Li * Jinjing Zhou - * dependabot[bot] * nullday ## v0.2.0-alpha.5 (2022-07-08) @@ -1390,14 +1107,11 @@ * [6e9e44d](https://github.com/tensorchord/envd/commit/6e9e44dfadf13c3899707beda09d92b4f907e24d) feat: Support specify build target (#497) * [e443784](https://github.com/tensorchord/envd/commit/e44378470ddd029e3f2c94c93e00b0399e89b772) feat(lang): Support RStudio server (#503) - * [89eb6e8](https://github.com/tensorchord/envd/commit/89eb6e8b5bdf795f2f1b145b75b6d87745284d71) chore(deps): bump github.com/stretchr/testify from 1.7.5 to 1.8.0 (#540) - * [74b27e9](https://github.com/tensorchord/envd/commit/74b27e9d0039c2558b3ebd152260f0c163fc7d37) chore(deps): bump dependabot/fetch-metadata from 1.3.1 to 1.3.3 (#539) ### Contributors * Ce Gao * Jinjing Zhou - * dependabot[bot] ## v0.2.0-alpha.3 (2022-07-01) @@ -1443,10 +1157,6 @@ * [2e8b5d5](https://github.com/tensorchord/envd/commit/2e8b5d5d4756b5c02c6d3e846b5be093fd6394b1) fix: include update repo (#885) * [eb2cdd1](https://github.com/tensorchord/envd/commit/eb2cdd1a65321a1530f59190cd40560e6c31d5a3) bug: Fix detach instruction message (#882) * [8a02b26](https://github.com/tensorchord/envd/commit/8a02b264ac16318c5d54660ca883414ef7a15cad) refact: add envd home path func (#880) - * [63daa5e](https://github.com/tensorchord/envd/commit/63daa5e870e5ea24c3f6e881e4932da2334688dc) chore(deps): bump github.com/spf13/viper from 1.12.0 to 1.13.0 (#875) - * [aa53bdb](https://github.com/tensorchord/envd/commit/aa53bdb478645863dae60ca37f1ebdbc7a564c56) chore(deps): bump github.com/urfave/cli/v2 from 2.14.0 to 2.16.2 (#874) - * [ddf3bdc](https://github.com/tensorchord/envd/commit/ddf3bdc8dd859683d7539d3c7f226b82cece40e7) chore(deps): bump actions/setup-go from 2 to 3 (#873) - * [7220958](https://github.com/tensorchord/envd/commit/72209583b941c4eb87b282004f7c8a1ae57410ae) chore(deps): bump actions/checkout from 2 to 3 (#872) * [f1b3fe5](https://github.com/tensorchord/envd/commit/f1b3fe5029091cffc0a1022b665d585132c5a8d8) chore(CLI): test new release for envd-sshd (#866) * [49d79fb](https://github.com/tensorchord/envd/commit/49d79fb17bee4a2baaeadd500607cba7d8426b28) fix: Update readme (#865) * [d7995a7](https://github.com/tensorchord/envd/commit/d7995a7171cbe48a65aad3e3b56077ffee9a625a) feat(lang): io.http download files to extra_source (#858) @@ -1456,10 +1166,6 @@ * [ecb9e26](https://github.com/tensorchord/envd/commit/ecb9e2626e65b5e1f647d7385142c10677f2d7eb) refact: unify the path env (#855) * [8056fda](https://github.com/tensorchord/envd/commit/8056fda28febfe6cbe64502159b302b670970517) feat: add runtime graph to image label (#815) * [6ad1d4c](https://github.com/tensorchord/envd/commit/6ad1d4ca2085317850e9726910bc3024b743439e) refact: apt_source, io, config mode (#853) - * [07e2dc0](https://github.com/tensorchord/envd/commit/07e2dc0e6d4d7f3be2debf79389a792964e727b1) chore(deps): bump github.com/gliderlabs/ssh from 0.3.4 to 0.3.5 (#849) - * [c0ba31a](https://github.com/tensorchord/envd/commit/c0ba31adc231d09600892f9445320df8eb84947b) chore(deps): bump github.com/onsi/gomega from 1.20.1 to 1.20.2 (#846) - * [13bc9a6](https://github.com/tensorchord/envd/commit/13bc9a61c4255215661c724fb7c54f2b81642a21) chore(deps): bump github.com/urfave/cli/v2 from 2.11.2 to 2.14.0 (#845) - * [11966f8](https://github.com/tensorchord/envd/commit/11966f8c0f997f57c45979d7857cac48ad1d1e5b) chore(deps): bump github.com/docker/go-units from 0.4.0 to 0.5.0 (#848) * [7ba3b3f](https://github.com/tensorchord/envd/commit/7ba3b3fa6b716efd3398a7cb3e533e915129717d) feat(cli): add msg when detach from container (#841) * [7fc9f34](https://github.com/tensorchord/envd/commit/7fc9f34d333b22013e847fd2c2312d18fb861068) fix: Update demo (#840) * [190ee76](https://github.com/tensorchord/envd/commit/190ee7635f0d9bbdee6c8b53d53a72dd8ca4e619) feat(lang): install.python_packages(local_wheels=[]) (#838) @@ -1469,8 +1175,6 @@ * [404de31](https://github.com/tensorchord/envd/commit/404de3101cece0497084412433cf877f66cf5ee2) feat(lang): init py env by generating the bulid.envd (#827) * [36b1231](https://github.com/tensorchord/envd/commit/36b123142385d20fb7f7c1106c15c02f79ed4742) bug: fix permission issue when pip install from git repo (#829) * [1dcada4](https://github.com/tensorchord/envd/commit/1dcada4403d0c0bf8e916fc67b62c174f66df3d3) feat(build): Mount local build context into the run command (#822) - * [f70a11c](https://github.com/tensorchord/envd/commit/f70a11c5f251b8ed0f0f42cd422b4b93efabd4a7) chore(deps): bump github.com/onsi/gomega from 1.20.0 to 1.20.1 (#821) - * [3b440c6](https://github.com/tensorchord/envd/commit/3b440c60c59ee65444a92aa91e295be9be2125b0) chore(deps): bump github.com/moby/buildkit from 0.10.3 to 0.10.4 (#820) * [82fbc87](https://github.com/tensorchord/envd/commit/82fbc87ade5637fe7db8e2c0087a1555206dc1b1) doc: add include, refine others (#817) * [630ada1](https://github.com/tensorchord/envd/commit/630ada172bdf876c3b749329fdbe284c108051f2) feat(lang): support include other git repo for envd functions/variables (#808) * [5c4971b](https://github.com/tensorchord/envd/commit/5c4971b2f5fa6b32c2c247e18cf6c6a178d28f57) feat(CLI): envd env describe expose info (#801) @@ -1490,8 +1194,6 @@ * [2f82fa5](https://github.com/tensorchord/envd/commit/2f82fa5ab884671ba2a5058d38d205cbd20bce1f) proposal: daemon process (#769) * [d06b878](https://github.com/tensorchord/envd/commit/d06b8786e2963f4bf5cc92b90fdcc80621a4bd5e) doc: update python api doc (#759) * [ce2e8b2](https://github.com/tensorchord/envd/commit/ce2e8b2b4e755b52892d9b3597489daae19f1dad) fix: Remove empty token arg (#772) - * [8ab89b9](https://github.com/tensorchord/envd/commit/8ab89b967caa104ad839a83d7d9ece186eb80918) chore(deps): bump github.com/urfave/cli/v2 from 2.11.1 to 2.11.2 (#775) - * [3a6b127](https://github.com/tensorchord/envd/commit/3a6b12772b956eb31b6ccc6c31e62efbc3feb6e3) chore(deps): bump pypa/cibuildwheel from 2.8.1 to 2.9.0 (#774) * [ec8cae1](https://github.com/tensorchord/envd/commit/ec8cae17b26de61bbb73026540db56505cffb2a8) fix: remove unnecessary if statement (#773) * [b9f0af8](https://github.com/tensorchord/envd/commit/b9f0af8056129fe6c5a2e590cd428463186cac0e) fix: -path and -file bug (#766) * [4a359f1](https://github.com/tensorchord/envd/commit/4a359f1eb608a0680a94379b4ac52756d605be9d) fix(release): :hammer: drop go build dep for homebrew (#768) @@ -1535,11 +1237,6 @@ * [b3ee633](https://github.com/tensorchord/envd/commit/b3ee6334a54e7d89b3f2631631c112c1d5ecac6a) fix: Fix lint issues in conda env yaml feature PR (#679) * [a796a12](https://github.com/tensorchord/envd/commit/a796a129d83e5c707bb9d0c1c32295208b136495) feat(lang): Support env.yaml in conda_packages (#674) * [af3e78d](https://github.com/tensorchord/envd/commit/af3e78d6733f53f5d31eda045725c0af599aefa6) feature: add label ai.tensorchord.envd.build.manifestBytecodeHash to image for cache robust (#661) - * [3044002](https://github.com/tensorchord/envd/commit/30440022266b908adbb790e59c6696b36bf92b28) chore(deps): bump github.com/onsi/gomega from 1.19.0 to 1.20.0 (#657) - * [400fd7f](https://github.com/tensorchord/envd/commit/400fd7f8af0a04d1d0aa5fd7f047fea59172a7ef) chore(deps): bump github.com/urfave/cli/v2 from 2.11.0 to 2.11.1 (#655) - * [30e8caf](https://github.com/tensorchord/envd/commit/30e8cafc80b04b1bfa6e4d9d2ba273928c8b3919) chore(deps): bump actions/upload-artifact from 2 to 3 (#654) - * [04360d6](https://github.com/tensorchord/envd/commit/04360d63ba984a1a58faaf300d0cee64269d442a) chore(deps): bump pypa/cibuildwheel from 2.8.0 to 2.8.1 (#653) - * [de6c59e](https://github.com/tensorchord/envd/commit/de6c59e730da4520bccc747bb941bb12ced913d7) chore(deps): bump github.com/sirupsen/logrus from 1.8.1 to 1.9.0 (#656) * [62091a4](https://github.com/tensorchord/envd/commit/62091a460b5502d24fa57a04ad19cf273c832832) fix(build): Fix image config (#651) * [4c1df28](https://github.com/tensorchord/envd/commit/4c1df286df7c3d5c4a99b4bbc5958f86d08e0738) fix: context create with 'use' (#652) * [6f05072](https://github.com/tensorchord/envd/commit/6f05072f1f2a72b55d8e2bac468707219ceb30b4) feat(CLI): Support cache (#648) @@ -1548,7 +1245,6 @@ * [890119d](https://github.com/tensorchord/envd/commit/890119d119e7becf9f39f392aa053ae1e70c77c0) fix: check manifest and image update in new gateway buildfunc (#624) * [c8471db](https://github.com/tensorchord/envd/commit/c8471db20f0a7e48c2c8346b3ab88637445200f5) support buildkit TCP socket (#599) * [ef8a90d](https://github.com/tensorchord/envd/commit/ef8a90df3bc1a3009381eb3fd10767f468fcefc2) feat: Refactor with Builder.Options (#615) - * [2a88ad1](https://github.com/tensorchord/envd/commit/2a88ad120b2a24b5095883a1e18de55189ff643f) chore(deps): bump github.com/urfave/cli/v2 from 2.10.3 to 2.11.0 (#610) * [18abe90](https://github.com/tensorchord/envd/commit/18abe90072835534f75b392b5f1ef6dbbf0bbeb5) feat(builder): Abstract BuildFunc to use gateway client (#606) * [178b8da](https://github.com/tensorchord/envd/commit/178b8dafdd4357688a911bfff103c397b08410a9) feat(WSL): Add ssh config entry to Windows ssh config if using WSL (#604) * [ceb07f5](https://github.com/tensorchord/envd/commit/ceb07f5fc43ced6da9ada711eb8c127d14afa969) fix: set conda as the only python provider (#602) @@ -1558,7 +1254,6 @@ * [fa041a8](https://github.com/tensorchord/envd/commit/fa041a849dde7f61f82fa2afdf105e45efc888ef) fix: Pre-mkdir the .cache directory of user envd (#592) * [54dfc52](https://github.com/tensorchord/envd/commit/54dfc52f4adc5cbce5de806dc6186e39adf21e0d) bug: fix missing function in example mnist (#589) * [00249bb](https://github.com/tensorchord/envd/commit/00249bbd2330088dc584015353837917bd557503) Use DefaultText in up.go (#587) - * [302e449](https://github.com/tensorchord/envd/commit/302e4490992d5f74bf5a9e08293cfb42a89e0367) chore(deps): bump pypa/cibuildwheel from 2.7.0 to 2.8.0 (#583) * [6cfc0f1](https://github.com/tensorchord/envd/commit/6cfc0f16224095605dd85fb38b9cf406fbb65118) feat: Support for build image update when exec build or up again (#570) * [8f89e4b](https://github.com/tensorchord/envd/commit/8f89e4be3d154728824c67f13086eb727f545400) Fix: image tag normalized to docker spec (#573) * [3fe3757](https://github.com/tensorchord/envd/commit/3fe375769487a4eaf224a6db1437c840002c7a15) fix: add -c for every single conda channel (#569) @@ -1569,8 +1264,6 @@ * [f71cd7f](https://github.com/tensorchord/envd/commit/f71cd7f4891fab5e1be588e9b991ab4942e02d57) feat(CLI): Unify CLI style about env and image (#550) * [6e9e44d](https://github.com/tensorchord/envd/commit/6e9e44dfadf13c3899707beda09d92b4f907e24d) feat: Support specify build target (#497) * [e443784](https://github.com/tensorchord/envd/commit/e44378470ddd029e3f2c94c93e00b0399e89b772) feat(lang): Support RStudio server (#503) - * [89eb6e8](https://github.com/tensorchord/envd/commit/89eb6e8b5bdf795f2f1b145b75b6d87745284d71) chore(deps): bump github.com/stretchr/testify from 1.7.5 to 1.8.0 (#540) - * [74b27e9](https://github.com/tensorchord/envd/commit/74b27e9d0039c2558b3ebd152260f0c163fc7d37) chore(deps): bump dependabot/fetch-metadata from 1.3.1 to 1.3.3 (#539) * [dbac24d](https://github.com/tensorchord/envd/commit/dbac24d7931832d0fed12e931e544d31a557626d) feat(docker): Add entrypoint and ports in image config (#533) * [60f85f5](https://github.com/tensorchord/envd/commit/60f85f53c62597bc47f9d4328bb071b9795e0474) fix(README): Update coverage (#536) * [8276d7d](https://github.com/tensorchord/envd/commit/8276d7da92658a2d885a00c5039a87fb78cb2376) feat(CLI): Add push (#531) @@ -1581,8 +1274,6 @@ * [523fb40](https://github.com/tensorchord/envd/commit/523fb400742ed5b539f44232d9eedad8eaefd13c) feat(CLI): Support context (#512) * [fde448a](https://github.com/tensorchord/envd/commit/fde448aff613306cb5ff3d763c06f05de12ec338) feat: add envd init (#514) * [8722564](https://github.com/tensorchord/envd/commit/8722564b12f0c96c58fca5d912c7c9c2e57c77a6) enhancement(CLI): Use upper case in CLI description (#515) - * [0ae8df9](https://github.com/tensorchord/envd/commit/0ae8df9e9eb4ec0c755920a7a3697cbab12b22e3) chore(deps): bump github.com/stretchr/testify from 1.7.2 to 1.7.5 (#505) - * [1cd5a27](https://github.com/tensorchord/envd/commit/1cd5a27027dd696276fa75e1d52a02858b7e7de8) chore(deps): bump github.com/urfave/cli/v2 from 2.8.1 to 2.10.3 (#504) * [ca6435d](https://github.com/tensorchord/envd/commit/ca6435ddfd29f5be2e85a1039da50c4db2fea03f) feat(lang): Support julia (#495) * [220d874](https://github.com/tensorchord/envd/commit/220d874712d7f7120f16337324d23b440163e3f7) feat(ssh): Config ssh key permanently and globally (#487) * [7127365](https://github.com/tensorchord/envd/commit/7127365e47c6a2923ce93ecf0164df49810b13fc) feat(lang): Support R language (#491) @@ -1618,7 +1309,6 @@ * Zhenguo.Li * Zhenzhen Zhao * Zhizhen He - * dependabot[bot] * kenwoodjw * nullday * wyq @@ -1640,10 +1330,6 @@ * [6e1cf05](https://github.com/tensorchord/envd/commit/6e1cf0509844060040bbd85d4f19e29410fb7a6f) fix: replace useless .editorconfig (#440) * [1c23cea](https://github.com/tensorchord/envd/commit/1c23cea84bfb37f2cd5ee0df63bf625448147994) release: Separate alpha and stable release in Homebrew (#439) * [274e183](https://github.com/tensorchord/envd/commit/274e18317597bb7a7a6413f59a52e7d5274ac85c) Update PyTorch installation CMD in examples (#435) - * [cfda1be](https://github.com/tensorchord/envd/commit/cfda1bed6f9861f198d0a37ebc8f46ed4bbb51ab) chore(deps): bump pypa/cibuildwheel from 2.6.1 to 2.7.0 (#428) - * [d25157e](https://github.com/tensorchord/envd/commit/d25157ef8169f2aa7c7169dfa18b389041a036a0) chore(deps): bump github.com/spf13/viper from 1.4.0 to 1.12.0 (#430) - * [d394410](https://github.com/tensorchord/envd/commit/d394410331eb25d20a33b6adef68506cbc0b6602) chore(deps): bump goreleaser/goreleaser-action from 2 to 3 (#427) - * [7070506](https://github.com/tensorchord/envd/commit/7070506f6c2acb44692dd06090ec9d614927ef65) chore(deps): bump github.com/gliderlabs/ssh from 0.3.3 to 0.3.4 (#429) * [2e287c9](https://github.com/tensorchord/envd/commit/2e287c9b1ea4d16c822532e56a39ae67bdf1982c) chore(destroy): add current path `.` as the default path (#422) * [750db5a](https://github.com/tensorchord/envd/commit/750db5a20328f5cb10a118ae348b5545dfef5a1f) chore(Makefile): add `help` target (#421) * [0c00005](https://github.com/tensorchord/envd/commit/0c0000571b7ffb1a4a9af418b1c91a1c28253ce8) Bootstrap gets error if the envd_buildkitd was stopped before (#417) @@ -1656,7 +1342,6 @@ * Kevin Su * Yuchen Cheng * Zhenzhen Zhao - * dependabot[bot] * kenwoodjw ## v0.1.0-alpha.12 (2022-06-17) @@ -1731,10 +1416,6 @@ * [85123b6](https://github.com/tensorchord/envd/commit/85123b6d427363f595f22ae0410bec6de7a092ef) fix: fix typo (#324) * [559e143](https://github.com/tensorchord/envd/commit/559e1435a9585fa32cee3eff73a11a577bcec111) chore(CI): Enable code coverage (#323) * [a4cb9dc](https://github.com/tensorchord/envd/commit/a4cb9dc0bf93970d604ac94dd88074f641bcff9b) fix(release): Change docker user (#321) - * [a5c3427](https://github.com/tensorchord/envd/commit/a5c3427c3feb38dbe5f0d7fdd633a8c978129837) chore(deps): bump github.com/moby/buildkit from 0.10.1 to 0.10.3 (#313) - * [43ad124](https://github.com/tensorchord/envd/commit/43ad1249ff938277b65bb91d7d8cf6a128380ad3) chore(deps): bump github.com/pkg/sftp from 1.13.4 to 1.13.5 (#309) - * [5a9c947](https://github.com/tensorchord/envd/commit/5a9c947edf1763745f1523ba7e4f2acf5f476990) chore(deps): bump github.com/stretchr/testify from 1.7.0 to 1.7.2 (#310) - * [4fb34e2](https://github.com/tensorchord/envd/commit/4fb34e29471b0a5625d075af02854f784aceb8a7) chore(deps): bump github.com/urfave/cli/v2 from 2.4.0 to 2.8.1 (#312) * [0c63064](https://github.com/tensorchord/envd/commit/0c6306476922f0abcf30771a7d724b150e2188b6) fix: add api/__init__.py (#317) ### Contributors @@ -1747,7 +1428,6 @@ * Yuan Tang * Yuchen Cheng * Zhizhen He - * dependabot[bot] * kenwoodjw ## v0.1.0-alpha.6 (2022-06-13) @@ -1819,10 +1499,6 @@ * [6e1cf05](https://github.com/tensorchord/envd/commit/6e1cf0509844060040bbd85d4f19e29410fb7a6f) fix: replace useless .editorconfig (#440) * [1c23cea](https://github.com/tensorchord/envd/commit/1c23cea84bfb37f2cd5ee0df63bf625448147994) release: Separate alpha and stable release in Homebrew (#439) * [274e183](https://github.com/tensorchord/envd/commit/274e18317597bb7a7a6413f59a52e7d5274ac85c) Update PyTorch installation CMD in examples (#435) - * [cfda1be](https://github.com/tensorchord/envd/commit/cfda1bed6f9861f198d0a37ebc8f46ed4bbb51ab) chore(deps): bump pypa/cibuildwheel from 2.6.1 to 2.7.0 (#428) - * [d25157e](https://github.com/tensorchord/envd/commit/d25157ef8169f2aa7c7169dfa18b389041a036a0) chore(deps): bump github.com/spf13/viper from 1.4.0 to 1.12.0 (#430) - * [d394410](https://github.com/tensorchord/envd/commit/d394410331eb25d20a33b6adef68506cbc0b6602) chore(deps): bump goreleaser/goreleaser-action from 2 to 3 (#427) - * [7070506](https://github.com/tensorchord/envd/commit/7070506f6c2acb44692dd06090ec9d614927ef65) chore(deps): bump github.com/gliderlabs/ssh from 0.3.3 to 0.3.4 (#429) * [2e287c9](https://github.com/tensorchord/envd/commit/2e287c9b1ea4d16c822532e56a39ae67bdf1982c) chore(destroy): add current path `.` as the default path (#422) * [750db5a](https://github.com/tensorchord/envd/commit/750db5a20328f5cb10a118ae348b5545dfef5a1f) chore(Makefile): add `help` target (#421) * [0c00005](https://github.com/tensorchord/envd/commit/0c0000571b7ffb1a4a9af418b1c91a1c28253ce8) Bootstrap gets error if the envd_buildkitd was stopped before (#417) @@ -1855,10 +1531,6 @@ * [85123b6](https://github.com/tensorchord/envd/commit/85123b6d427363f595f22ae0410bec6de7a092ef) fix: fix typo (#324) * [559e143](https://github.com/tensorchord/envd/commit/559e1435a9585fa32cee3eff73a11a577bcec111) chore(CI): Enable code coverage (#323) * [a4cb9dc](https://github.com/tensorchord/envd/commit/a4cb9dc0bf93970d604ac94dd88074f641bcff9b) fix(release): Change docker user (#321) - * [a5c3427](https://github.com/tensorchord/envd/commit/a5c3427c3feb38dbe5f0d7fdd633a8c978129837) chore(deps): bump github.com/moby/buildkit from 0.10.1 to 0.10.3 (#313) - * [43ad124](https://github.com/tensorchord/envd/commit/43ad1249ff938277b65bb91d7d8cf6a128380ad3) chore(deps): bump github.com/pkg/sftp from 1.13.4 to 1.13.5 (#309) - * [5a9c947](https://github.com/tensorchord/envd/commit/5a9c947edf1763745f1523ba7e4f2acf5f476990) chore(deps): bump github.com/stretchr/testify from 1.7.0 to 1.7.2 (#310) - * [4fb34e2](https://github.com/tensorchord/envd/commit/4fb34e29471b0a5625d075af02854f784aceb8a7) chore(deps): bump github.com/urfave/cli/v2 from 2.4.0 to 2.8.1 (#312) * [0c63064](https://github.com/tensorchord/envd/commit/0c6306476922f0abcf30771a7d724b150e2188b6) fix: add api/__init__.py (#317) * [12cf334](https://github.com/tensorchord/envd/commit/12cf3345b6c09106508271dd84bd41bc03ceedbc) fix: Fix twine (#301) * [f42e162](https://github.com/tensorchord/envd/commit/f42e1625fd11332411b821931d0664494bfc1927) fix: Instal twine (#300) @@ -1912,7 +1584,6 @@ * Yuchen Cheng * Zhenzhen Zhao * Zhizhen He - * dependabot[bot] * kenwoodjw ## v0.0.1-rc.1 (2022-06-02) diff --git a/hack/changelog.sh b/hack/changelog.sh index 55393bba1..5a2cf5509 100755 --- a/hack/changelog.sh +++ b/hack/changelog.sh @@ -9,7 +9,7 @@ git tag -l 'v*' | sort -rV | while read last; do if [ "$tag" != "" ]; then echo "## $(git for-each-ref --format='%(refname:strip=2) (%(creatordate:short))' refs/tags/${tag})" echo - git_log='git --no-pager log --no-merges --invert-grep --grep=^\(build\|ci\|docs\|test\|chore\):' + git_log='git --no-pager log --no-merges --invert-grep --grep=^\(build\|ci\|docs\|test\|chore\|chore(deps)\):' $git_log --format=' * [%h](https://github.com/tensorchord/envd/commit/%H) %s' $last..$tag echo echo "### Contributors" From 978a2856bc36a721d7a0d3596c8523edf6980640 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:17:42 +0800 Subject: [PATCH 169/355] chore(deps): bump crate-ci/typos from 1.15.0 to 1.15.5 (#1667) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.15.0 to 1.15.5. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.15.0...v1.15.5) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ecea686b1..54ad7c14c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.15.0 + uses: crate-ci/typos@v1.15.5 with: config: ./typos.toml lint: From f75789d29793a407273bab41ab9408a5a10547a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:43:41 +0800 Subject: [PATCH 170/355] chore(deps): bump github.com/cockroachdb/errors from 1.9.1 to 1.10.0 (#1668) Bumps [github.com/cockroachdb/errors](https://github.com/cockroachdb/errors) from 1.9.1 to 1.10.0. - [Release notes](https://github.com/cockroachdb/errors/releases) - [Commits](https://github.com/cockroachdb/errors/compare/v1.9.1...v1.10.0) --- updated-dependencies: - dependency-name: github.com/cockroachdb/errors dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 +-- go.sum | 159 ++++----------------------------------------------------- 2 files changed, 13 insertions(+), 154 deletions(-) diff --git a/go.mod b/go.mod index 3804c7485..612211497 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/bcicen/ctop v0.7.7 github.com/charmbracelet/bubbletea v0.24.2 github.com/charmbracelet/lipgloss v0.7.1 - github.com/cockroachdb/errors v1.9.1 + github.com/cockroachdb/errors v1.10.0 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 github.com/containerd/containerd v1.7.2 github.com/containers/image/v5 v5.25.0 @@ -67,8 +67,8 @@ require ( github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect - github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f // indirect - github.com/cockroachdb/redact v1.1.3 // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/redact v1.1.5 // indirect github.com/containerd/continuity v0.4.1 // indirect github.com/containerd/ttrpc v1.2.2 // indirect github.com/containerd/typeurl v1.0.2 // indirect @@ -83,7 +83,7 @@ require ( github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.12.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.12.0 // indirect + github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.3.1 // indirect github.com/go-logr/logr v1.2.4 // indirect diff --git a/go.sum b/go.sum index f182ac2c2..011939e08 100644 --- a/go.sum +++ b/go.sum @@ -193,7 +193,6 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= -github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -202,9 +201,6 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= -github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= @@ -217,22 +213,18 @@ github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00 github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= -github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= github.com/bcicen/ctop v0.7.7/go.mod h1:jO0mmP/wGx4ZEGCWAoMx8DYFNTYNs6YG8wzCGj+DX+Q= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= @@ -267,14 +259,12 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= -github.com/cockroachdb/errors v1.9.1 h1:yFVvsI0VxmRShfawbt/laCIDy/mtTqqnvoNgiy5bEV8= -github.com/cockroachdb/errors v1.9.1/go.mod h1:2sxOtL2WIc096WSZqZ5h8fa17rdDq9HZOZLBCor4mBk= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f h1:6jduT9Hfc0njg5jJ1DdKCFPdMBrp/mdZfCpa5h+WM74= -github.com/cockroachdb/logtags v0.0.0-20211118104740-dabe8e521a4f/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/redact v1.1.3 h1:AKZds10rFSIj7qADf0g46UixK8NNLwWTNdCIGS5wfSQ= -github.com/cockroachdb/redact v1.1.3/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= +github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= +github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= +github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -312,12 +302,8 @@ github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzk github.com/containers/ocicrypt v1.1.7/go.mod h1:7CAhjcj2H8AYp5YvEie7oVSK2AhBY8NscCYRawuDNtw= github.com/containers/storage v1.46.0 h1:K3Tw/U+ZwmMT/tzX04mh5wnK2PuIdEGS2BGMP7ZYAqw= github.com/containers/storage v1.46.0/go.mod h1:AVNewDV1jODy8b4Ia4AgsJ6UFKQSIaOQvQ8S6N4VuH0= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= @@ -333,8 +319,6 @@ github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/docker/cli v24.0.1+incompatible h1:uVl5Xv/39kZJpDo9VaktTOYBc702sdYYF33FqwUG/dM= github.com/docker/cli v24.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= @@ -350,7 +334,6 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -363,10 +346,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= -github.com/fasthttp-contrib/websocket v0.0.0-20160511215533-1f3b11f56072/go.mod h1:duJ4Jxv5lDcvg4QuQr0oowTf7dz4/CR8NtyCooz9HL8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= @@ -376,21 +356,16 @@ github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmV github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= -github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= -github.com/getsentry/sentry-go v0.12.0 h1:era7g0re5iY13bHSdN/xMkyV+5zZppjRVQhZrXCaEIk= -github.com/getsentry/sentry-go v0.12.0/go.mod h1:NSap0JBYWzHND8oMbyi0+XZhUalc1TBdRL1M71JZW2c= +github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= +github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.0.0-20190301062529-5545eab6dad3/go.mod h1:VJ0WA2NBN22VlZ2dKZQPAPnyWw5XTlK1KymzLKsr59s= -github.com/gin-gonic/gin v1.4.0/go.mod h1:OW2EZn3DO8Ln9oIKOvM++LBO+5UPHJJDH72/q/3rZdM= github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= -github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= -github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= -github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= @@ -410,30 +385,22 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v0.0.0-20180223154316-0cd9801be74a/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= -github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= @@ -474,7 +441,6 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= @@ -493,7 +459,6 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -545,10 +510,8 @@ github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK6 github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/greatroar/blobloom v0.7.2 h1:F30MGLHOcb4zr0pwCPTcKdlTM70rEgkf+LzdUPc5ss8= github.com/greatroar/blobloom v0.7.2/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= @@ -567,7 +530,6 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -577,20 +539,13 @@ github.com/hashicorp/golang-lru/v2 v2.0.2/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyf github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hydrogen18/memlistener v0.0.0-20200120041712-dcc25e7acd91/go.mod h1:qEIFzExnS6016fRpRfxrExeVn2gbClQA99gQhnIcdhE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= -github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= -github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= -github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= -github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= -github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= @@ -599,31 +554,19 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= -github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= -github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= -github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= -github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= -github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= @@ -637,33 +580,21 @@ github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= -github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -676,9 +607,6 @@ github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= -github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= -github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= @@ -692,7 +620,6 @@ github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJ github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs= @@ -716,13 +643,10 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= @@ -732,10 +656,6 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= @@ -747,7 +667,6 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= @@ -784,7 +703,6 @@ github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuh github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= @@ -794,7 +712,6 @@ github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7c github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -818,18 +735,13 @@ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= @@ -839,7 +751,6 @@ github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/P github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= github.com/segmentio/backo-go v1.0.0 h1:kbOAtGJY2DqOR0jfRkYEorx/b18RgtepGtY3+Cpe6qA= github.com/segmentio/backo-go v1.0.0/go.mod h1:kJ9mm9YmoWSkk+oQ+5Cj8DEoRCX2JT6As4kEtIIOp1M= -github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= @@ -856,26 +767,19 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ= -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= @@ -918,10 +822,6 @@ github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/ github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f h1:DLpt6B5oaaS8jyXHa9VA4rrZloBVPVXeCtrOsrFauxc= github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= @@ -930,28 +830,14 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= -github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= -github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= -github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= -github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= -github.com/yudai/pp v2.0.1+incompatible/go.mod h1:PuxR/8QJ7cyCkFp/aUDS+JY727OFEZkTdatxwunjIkc= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -990,14 +876,11 @@ go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1dr go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= @@ -1051,11 +934,9 @@ golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -1063,7 +944,6 @@ golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1092,7 +972,6 @@ golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5o golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1156,9 +1035,7 @@ golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180926160741-c2ed4eda69e7/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1167,9 +1044,7 @@ golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1181,7 +1056,6 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1214,7 +1088,6 @@ golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1229,8 +1102,6 @@ golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1284,19 +1155,15 @@ golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= @@ -1417,7 +1284,6 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/genproto v0.0.0-20180518175338-11a468237815/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1524,7 +1390,6 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1591,12 +1456,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= -gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/RRjR0eouCJSH80/M2Y= -gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= @@ -1609,9 +1470,7 @@ gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 8939ffac3b45575f98c07b2c2ebd33b7b54de42e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:44:10 +0800 Subject: [PATCH 171/355] chore(deps): bump github.com/stretchr/testify from 1.8.3 to 1.8.4 (#1670) Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify) from 1.8.3 to 1.8.4. - [Release notes](https://github.com/stretchr/testify/releases) - [Commits](https://github.com/stretchr/testify/compare/v1.8.3...v1.8.4) --- updated-dependencies: - dependency-name: github.com/stretchr/testify dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 612211497..5048adf28 100644 --- a/go.mod +++ b/go.mod @@ -37,7 +37,7 @@ require ( github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.16.0 - github.com/stretchr/testify v1.8.3 + github.com/stretchr/testify v1.8.4 github.com/syncthing/syncthing v1.23.5 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea diff --git a/go.sum b/go.sum index 011939e08..72cc93dfc 100644 --- a/go.sum +++ b/go.sum @@ -798,8 +798,9 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= From 9bac2c0b2f3ad9bd87806de3226bc5b4faf8ce68 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:44:29 +0800 Subject: [PATCH 172/355] chore(deps): bump golang.org/x/sync from 0.2.0 to 0.3.0 (#1669) Bumps [golang.org/x/sync](https://github.com/golang/sync) from 0.2.0 to 0.3.0. - [Commits](https://github.com/golang/sync/compare/v0.2.0...v0.3.0) --- updated-dependencies: - dependency-name: golang.org/x/sync dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5048adf28..88bd3cd00 100644 --- a/go.mod +++ b/go.mod @@ -45,7 +45,7 @@ require ( github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.10.0 - golang.org/x/sync v0.2.0 + golang.org/x/sync v0.3.0 golang.org/x/term v0.9.0 golang.org/x/time v0.3.0 ) diff --git a/go.sum b/go.sum index 72cc93dfc..5b60c761e 100644 --- a/go.sum +++ b/go.sum @@ -1030,8 +1030,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= From 73794012482324ed8a909118869631e8401e78f6 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 29 Jun 2023 16:11:58 +0800 Subject: [PATCH 173/355] feat(v1): inherit the base user for non-dev mode (#1672) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/system.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index baf31043f..951d911f3 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -361,9 +361,11 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { if len(g.Entrypoint) == 0 { g.Entrypoint = config.Entrypoint } + g.User = config.User + } else { + // for dev mode, we will create an `envd` user + g.User = "" } - // TODO: inherit the USER from base - g.User = "" return base, nil } From 88f1541c675a5ee50a6b2cedc57ce336e4d6df6f Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 29 Jun 2023 17:15:14 +0800 Subject: [PATCH 174/355] fix(v1): keep the PATH from the base image (#1673) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/compile.go | 5 ++++- pkg/lang/ir/v1/system.go | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 176f84140..a188d3992 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -39,7 +39,7 @@ func NewGraph() ir.Graph { runtimeGraph := ir.RuntimeGraph{ RuntimeCommands: make(map[string]string), RuntimeEnviron: make(map[string]string), - RuntimeEnvPaths: []string{types.DefaultSystemPath}, + RuntimeEnvPaths: strings.Split(types.DefaultSystemPath, ":"), } return &generalGraph{ uid: -1, @@ -261,6 +261,9 @@ func (g generalGraph) ExposedPorts() (map[string]struct{}, error) { func (g generalGraph) EnvString() []string { var envs []string for k, v := range g.RuntimeEnviron { + if k == "PATH" { + continue + } envs = append(envs, fmt.Sprintf("%s=%s", k, v)) } envs = append(envs, fmt.Sprintf("PATH=%s", strings.Join(g.RuntimeEnvPaths, ":"))) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 951d911f3..d41592155 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -347,6 +347,25 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { // in case the env value also contains `=` kv := strings.SplitN(e, "=", 2) g.RuntimeEnviron[kv[0]] = kv[1] + if kv[0] == "PATH" { + // deduplicate the PATH but keep the order as: + // 0. default Unix PATH + // 1. configured paths in the Starlark frontend `runtime.environ(extra_path=[...])` + // 2. paths in the base image + // 3. others added during the image building (Python paths, etc.) + extraPaths := make(map[string]bool) + for _, path := range strings.Split(kv[1], ":") { + extraPaths[path] = true + } + for _, path := range g.RuntimeEnvPaths { + extraPaths[path] = false + } + for path, required := range extraPaths { + if required { + g.RuntimeEnvPaths = append(g.RuntimeEnvPaths, path) + } + } + } } // add necessary envs From 40ddcc37f3e4fc4ba2fa61076c0d8c08d2008bc1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 17:56:13 +0800 Subject: [PATCH 175/355] docs: updated CHANGELOG.md (#1674) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f2ca63e62..ba231ffdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v0.3.28 (2023-06-29) + + * [88f1541](https://github.com/tensorchord/envd/commit/88f1541c675a5ee50a6b2cedc57ce336e4d6df6f) fix(v1): keep the PATH from the base image (#1673) + * [7379401](https://github.com/tensorchord/envd/commit/73794012482324ed8a909118869631e8401e78f6) feat(v1): inherit the base user for non-dev mode (#1672) + +### Contributors + + * Keming + ## v0.3.27 (2023-06-17) * [fa7e989](https://github.com/tensorchord/envd/commit/fa7e989b186149a4f85d39a758bdee7a245b5ebf) refactor: use template for buildkit config file (#1658) @@ -837,6 +846,56 @@ ### Contributors +## v0.2.0-beta.1 (2022-09-27) + + +### Contributors + + +## v0.2.0-beta6 (2022-09-28) + + * [9046f3b](https://github.com/tensorchord/envd/commit/9046f3b1e0bd6e990e0b651584d042a585fd17c8) fix gorlease v + * [9fea9e8](https://github.com/tensorchord/envd/commit/9fea9e8b1944acf82ac81d07874d7b2d22b4ce97) cache gpu + * [c7917a6](https://github.com/tensorchord/envd/commit/c7917a607553338b58a4d40af1a3262cd5618bb8) use git tag + * [c5aeec6](https://github.com/tensorchord/envd/commit/c5aeec6ee82fdeb2d6da2ecc0f5d3baf1093e918) fix ref bug + +### Contributors + + * Keming + +## v0.2.0-beta5 (2022-09-27) + + * [86f0b17](https://github.com/tensorchord/envd/commit/86f0b170902275d9320de819cfd708d6fd797015) fix ci secret + +### Contributors + + * Keming + +## v0.2.0-beta4 (2022-09-27) + + * [5cb30f3](https://github.com/tensorchord/envd/commit/5cb30f33067c3334435ade69a5c082a870a63a70) only run some ci in tensorchord + * [cfefb15](https://github.com/tensorchord/envd/commit/cfefb15c7120b04bb711ee4a7f84e0803fbae487) fix ci yml + * [84c80be](https://github.com/tensorchord/envd/commit/84c80be8cb4f753a2131fa671569925bd9c1bf7f) fix ci + * [cea390d](https://github.com/tensorchord/envd/commit/cea390ddf1a61358ade9cebbe2f4fdc71a7233fe) del python dockerfile + * [2a45a8f](https://github.com/tensorchord/envd/commit/2a45a8f2f918288c3d862597c4c94566f9138773) cuda version + * [5e407d0](https://github.com/tensorchord/envd/commit/5e407d0eb1a73cac86721b66c2bed290d35ac76e) delete outdated comments + * [16ca22f](https://github.com/tensorchord/envd/commit/16ca22f7d2e1f02060f299c4a69c74db647ef843) add llb log + * [7327c13](https://github.com/tensorchord/envd/commit/7327c13c32ff897160b40e49eb70b884589b5bd1) copy envd-sshd + * [f58e55b](https://github.com/tensorchord/envd/commit/f58e55ba4b52b7b9efa1a4669e5f5b11b364b7a0) change to docker hub + * [0863ac5](https://github.com/tensorchord/envd/commit/0863ac5c6ea050dd5832d54c6dd90f80b5adf3d4) change python dockerfile to llb + * [bd69c3d](https://github.com/tensorchord/envd/commit/bd69c3df326f1f213472960c099dff0c6d35e41c) feat: Support envd-server (#932) + * [171b82f](https://github.com/tensorchord/envd/commit/171b82fcbac1da9543b9acda1911d110c322d802) fix: e2e doc test (#926) + * [ce36545](https://github.com/tensorchord/envd/commit/ce36545d4865a6062ab4b6332a0e26e0d7030db2) feat(cli): rm image when destroying the env (#925) + * [eecc7cf](https://github.com/tensorchord/envd/commit/eecc7cf48cf354ef3d72f17dfcf1d6f19bf90b85) feat: informative error message (#859) + * [c3c0b4e](https://github.com/tensorchord/envd/commit/c3c0b4e33ab696c3863632d0d4179f8211813fcb) fix: Use macos 11 (#912) + * [6721a88](https://github.com/tensorchord/envd/commit/6721a88aa1e2a97bfd3060e3168ab15b61f25609) chore(goreleaser): Skip homebrew (#909) + +### Contributors + + * Ce Gao + * Jinjing Zhou + * Keming + ## v0.2.0-alpha.22 (2022-09-16) * [4707bfe](https://github.com/tensorchord/envd/commit/4707bfeaea030a48c5601bffb87ff034e4d1b413) fix: Fix jupyter in root (#900) @@ -856,6 +915,14 @@ ## v0.2.0-alpha.21 (2022-09-12) * [f1b3fe5](https://github.com/tensorchord/envd/commit/f1b3fe5029091cffc0a1022b665d585132c5a8d8) chore(CLI): test new release for envd-sshd (#866) + +### Contributors + + * Yuedong Wu + +## v0.2.0-alpha.20 (2022-09-11) + + * [b38c5de](https://github.com/tensorchord/envd/commit/b38c5de82aac50fe085cd48d2111f7f5d241b6d7) chore(CLI): test new release for envd-sshd (#866) * [49d79fb](https://github.com/tensorchord/envd/commit/49d79fb17bee4a2baaeadd500607cba7d8426b28) fix: Update readme (#865) * [d7995a7](https://github.com/tensorchord/envd/commit/d7995a7171cbe48a65aad3e3b56077ffee9a625a) feat(lang): io.http download files to extra_source (#858) * [0d3b42f](https://github.com/tensorchord/envd/commit/0d3b42fe4f33241742986030a45431a5f068dc75) feat: Support HTTP PROXY (#857) From 678a1c759f8d433bff5e5997019828060fef9515 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 29 Jun 2023 18:32:36 +0800 Subject: [PATCH 176/355] chore: fix the goreleaser action and name template (#1675) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 4 ++-- .goreleaser.yaml | 44 ++++++++++------------------------- 2 files changed, 14 insertions(+), 34 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6be918529..2797c5cfc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,11 +29,11 @@ jobs: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v3 + uses: goreleaser/goreleaser-action@v4 with: distribution: goreleaser version: latest - args: release --rm-dist + args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: upload gobin diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 13eadcd52..ed644f026 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -41,22 +41,22 @@ archives: format: binary builds: - envd - replacements: - darwin: Darwin - linux: Linux - windows: Windows - 386: i386 - amd64: x86_64 + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} - id: envd-sshd format: binary builds: - envd-sshd - replacements: - darwin: Darwin - linux: Linux - windows: Windows - 386: i386 - amd64: x86_64 + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} checksum: name_template: 'checksums.txt' snapshot: @@ -123,23 +123,3 @@ docker_manifests: image_templates: - tensorchord/envd-from-scratch:v{{ .Version }}-amd64 - tensorchord/envd-from-scratch:v{{ .Version }}-arm64v8 -# See https://github.com/tensorchord/envd/issues/908 -# brews: -# - name: envd -# ids: -# - envd -# tap: -# owner: tensorchord -# name: homebrew-tap -# commit_author: -# name: TensorChord -# email: envd-maintainers@tensorchord.ai -# folder: Formula -# homepage: https://envd.tensorchord.ai/ -# description: Development environment for data science and AI/ML teams -# license: Apache-2.0 -# skip_upload: auto -# caveats: | -# Please run `envd bootstrap` first to bootstrap -# test: | -# system "#{bin}/envd version" From 72a243037e6d117379deec50f52613d97c316320 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 18:41:50 +0800 Subject: [PATCH 177/355] docs: updated CHANGELOG.md (#1676) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba231ffdb..e122f0e4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v0.3.29 (2023-06-29) + + +### Contributors + + ## v0.3.28 (2023-06-29) * [88f1541](https://github.com/tensorchord/envd/commit/88f1541c675a5ee50a6b2cedc57ce336e4d6df6f) fix(v1): keep the PATH from the base image (#1673) From 561609389df91aa78e85e40a2f7e2f85ecc2f8e6 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 29 Jun 2023 19:03:12 +0800 Subject: [PATCH 178/355] chore: fix the goreleaser name template (#1677) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .goreleaser.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index ed644f026..e6f888ee8 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -42,7 +42,8 @@ archives: builds: - envd name_template: >- - {{ .ProjectName }}_ + {{ .Binary }}_ + {{ .Version }}_ {{- title .Os }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "386" }}i386 @@ -52,7 +53,8 @@ archives: builds: - envd-sshd name_template: >- - {{ .ProjectName }}_ + {{ .Binary }}_ + {{ .Version }}_ {{- title .Os }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "386" }}i386 From 1e218267f18c07833acdf86f9cee70ed832a0472 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 29 Jun 2023 19:43:36 +0800 Subject: [PATCH 179/355] docs: updated CHANGELOG.md (#1678) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e122f0e4f..64e9265b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v0.3.30 (2023-06-29) + + +### Contributors + + ## v0.3.29 (2023-06-29) From b5f9a49d911ce5ee1e8859968f449835d4147c5f Mon Sep 17 00:00:00 2001 From: Richard Li <98242479+RichhLi@users.noreply.github.com> Date: Thu, 29 Jun 2023 19:09:49 -0700 Subject: [PATCH 180/355] Fix PATH Order (#1679) * fix path order Signed-off-by: Richard Li <ricli@linkedin.com> * whitespace Signed-off-by: Richard Li <ricli@linkedin.com> --------- Signed-off-by: Richard Li <ricli@linkedin.com> Co-authored-by: Richard Li <ricli@linkedin.com> --- pkg/lang/ir/v1/system.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index d41592155..f6ec6a7e8 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -353,15 +353,20 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { // 1. configured paths in the Starlark frontend `runtime.environ(extra_path=[...])` // 2. paths in the base image // 3. others added during the image building (Python paths, etc.) - extraPaths := make(map[string]bool) - for _, path := range strings.Split(kv[1], ":") { - extraPaths[path] = true - } + + // iterate over the original paths and add them to the map + pathMap := make(map[string]bool) for _, path := range g.RuntimeEnvPaths { - extraPaths[path] = false + pathMap[path] = true } - for path, required := range extraPaths { - if required { + // split the PATH into different paths + newPaths := strings.Split(kv[1], ":") + // iterate over the new paths + for _, path := range newPaths { + // check if the path is already in the map + if _, ok := pathMap[path]; !ok { + // if not, add the path to the map and slice + pathMap[path] = true g.RuntimeEnvPaths = append(g.RuntimeEnvPaths, path) } } From d4664fbf8aae831f46783f08a1d8463e01a8c923 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 10:32:41 +0800 Subject: [PATCH 181/355] chore(deps): bump dependabot/fetch-metadata from 1.5.1 to 1.6.0 (#1682) Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 1.5.1 to 1.6.0. - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](https://github.com/dependabot/fetch-metadata/compare/v1.5.1...v1.6.0) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/auto-merge.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml index 4bc0e5b76..d7c37f7ba 100644 --- a/.github/workflows/auto-merge.yml +++ b/.github/workflows/auto-merge.yml @@ -13,7 +13,7 @@ jobs: steps: - name: Dependabot metadata id: metadata - uses: dependabot/fetch-metadata@v1.5.1 + uses: dependabot/fetch-metadata@v1.6.0 with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Approve PR From 5383e01882204da67a68eff856110807b31130f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jul 2023 10:43:45 +0800 Subject: [PATCH 182/355] chore(deps): bump crate-ci/typos from 1.15.5 to 1.15.9 (#1681) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.15.5 to 1.15.9. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.15.5...v1.15.9) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 54ad7c14c..c429760e4 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.15.5 + uses: crate-ci/typos@v1.15.9 with: config: ./typos.toml lint: From cde4632b2954b510e72efe2a7373d2c1d37456e9 Mon Sep 17 00:00:00 2001 From: Richard Li <98242479+RichhLi@users.noreply.github.com> Date: Mon, 3 Jul 2023 21:13:21 -0700 Subject: [PATCH 183/355] support using json for registry config (#1680) * support using json for registry config Signed-off-by: Richard Li <ricli@linkedin.com> * simplify code Signed-off-by: Richard Li <ricli@linkedin.com> * Update pkg/app/bootstrap.go Co-authored-by: Keming <kemingy94@gmail.com> Signed-off-by: Richard Li <98242479+RichhLi@users.noreply.github.com> --------- Signed-off-by: Richard Li <ricli@linkedin.com> Signed-off-by: Richard Li <98242479+RichhLi@users.noreply.github.com> Co-authored-by: Richard Li <ricli@linkedin.com> Co-authored-by: Keming <kemingy94@gmail.com> --- pkg/app/bootstrap.go | 119 +++++++++++++++++++++++-- pkg/driver/docker/docker.go | 3 +- pkg/driver/nerdctl/nerdctl.go | 2 +- pkg/util/buildkitutil/buildkit.go | 40 ++++++--- pkg/util/buildkitutil/buildkit_test.go | 94 +++++++++++++++---- 5 files changed, 217 insertions(+), 41 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 2dc421937..067b74a04 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -15,6 +15,7 @@ package app import ( + "encoding/json" "fmt" "os" "path/filepath" @@ -75,6 +76,11 @@ var CommandBootstrap = &cli.Command{ Name: "registry", Usage: "Specify the registry to pull the image from", Aliases: []string{"r"}, + Value: "docker.io", + }, + &cli.StringFlag{ + Name: "registry-config", + Usage: "Path to a JSON file containing registry configuration. Cannot be used with 'registry' or 'registry-ca-keypair'", }, }, @@ -91,6 +97,9 @@ func bootstrap(clicontext *cli.Context) error { }, { "registry CA keypair", registryCA, + }, { + "registry json config", + registryJSONConfig, }, { "autocomplete", autocomplete, @@ -112,16 +121,25 @@ func bootstrap(clicontext *cli.Context) error { } func registryCA(clicontext *cli.Context) error { + configFile := clicontext.String("registry-config") ca := clicontext.String("registry-ca-keypair") + registry := clicontext.String("registry") + if len(ca) == 0 { return nil } + + // We only need this check in registryCA because it is called before registryJSONConfig + if len(configFile) > 0 && len(ca) > 0 { + return errors.New("only one of `registry-config` and `registry-ca-keypair` can be used") + } + mirror := clicontext.String("dockerhub-mirror") if len(mirror) == 0 { return errors.New("`registry-ca-keypair` should be used with `dockerhub-mirror`") } - // parse ca/key/cert + // Parse ca/key/cert kvPairs := strings.Split(ca, ",") if len(kvPairs) != 3 { return errors.New("`registry-ca-keypair` requires ca/key/cert 3 part separated by ','") @@ -146,7 +164,8 @@ func registryCA(clicontext *cli.Context) error { if !exist { return errors.Newf("file %s doesn't exist", kv[1]) } - path, err := fileutil.ConfigFile(fmt.Sprintf("registry_%s.pem", kv[0])) + + path, err := fileutil.ConfigFile(fmt.Sprintf("%s_%s.pem", registry, kv[0])) if err != nil { return errors.Wrap(err, "failed to get the envd config file path") } @@ -166,6 +185,69 @@ func registryCA(clicontext *cli.Context) error { return nil } +func registryJSONConfig(clicontext *cli.Context) error { + configFile := clicontext.String("registry-config") + if len(configFile) == 0 { + return nil + } + + // Check if file exists + exist, err := fileutil.FileExists(configFile) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("failed to parse file path %s", configFile)) + } + if !exist { + return errors.Newf("file %s doesn't exist", configFile) + } + + config := buildkitutil.BuildkitConfig{} + configJson, err := os.ReadFile(configFile) + if err != nil { + return errors.Wrap(err, "Failed to read registry config file") + } + if err := json.Unmarshal(configJson, &config); err != nil { + return errors.Wrap(err, "Failed to parse registry config file") + } + + // Check for required keys in each registry + for i, registry := range config.Registries { + if registry.Name == "" { + return errors.Newf("`name` key is required in the config for registry at index %d", i) + } + + // Check for optional keys and if they exist, ensure they point to existing files + optionalKeys := map[string]string{"ca": registry.Ca, "cert": registry.Cert, "key": registry.Key} + for key, value := range optionalKeys { + if value != "" { + exist, err := fileutil.FileExists(value) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("failed to parse file path %s", value)) + } + if !exist { + return errors.Newf("file %s doesn't exist", value) + } + + // Read the file + content, err := os.ReadFile(value) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("failed to read the %s file for registry %s", key, registry.Name)) + } + + // Write the content to the envd config directory + envdConfigPath, err := fileutil.ConfigFile(fmt.Sprintf("%s_%s.pem", registry.Name, key)) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("failed to get the envd config file path for %s of registry %s", key, registry.Name)) + } + + if err = os.WriteFile(envdConfigPath, content, 0644); err != nil { + return errors.Wrap(err, fmt.Sprintf("failed to store the %s file for registry %s", key, registry.Name)) + } + } + } + } + return nil +} + func sshKey(clicontext *cli.Context) error { sshKeyPair := clicontext.StringSlice("ssh-keypair") @@ -240,7 +322,7 @@ func sshKey(clicontext *cli.Context) error { return nil default: - return errors.Errorf("Invalid ssh-keypair flag") + return errors.Newf("Invalid ssh-keypair flag") } } @@ -289,14 +371,33 @@ func buildkit(clicontext *cli.Context) error { } logrus.Debug("bootstrap the buildkitd container") - var bkClient buildkitd.Client - config := buildkitutil.BuildkitConfig{ - Registry: clicontext.String("registry"), - Mirror: clicontext.String("dockerhub-mirror"), - UseHTTP: clicontext.Bool("use-http"), - SetCA: clicontext.IsSet("registry-ca-keypair"), + // Populate the BuildkitConfig struct + config := buildkitutil.BuildkitConfig{} + + configFile := clicontext.String("registry-config") + if len(configFile) != 0 { + configJson, err := os.ReadFile(configFile) + if err != nil { + return errors.Wrap(err, "Failed to read registry config file") + } + if err := json.Unmarshal(configJson, &config); err != nil { + return errors.Wrap(err, "Failed to parse registry config file") + } + } else if len(clicontext.String("registry-ca-keypair")) != 0 { + // The values of Ca, Cert, and Key don't actually matter since we already copied their contents to the envd config directory and mounted to `/etc/registry`. + // So instead of parsing registry-ca-keypair again, we'll just put the default value. + // This is to ensure that buildkitConfigTemplate parses properly. + config.Registries = append(config.Registries, buildkitutil.Registry{ + Name: clicontext.String("registry"), + Ca: "/etc/registry", + Cert: "/etc/registry", + Key: "/etc/registry", + UseHttp: clicontext.Bool("use-http"), + Mirror: clicontext.String("dockerhub-mirror"), + }) } + var bkClient buildkitd.Client if c.Builder == types.BuilderTypeMoby { bkClient, err = buildkitd.NewMobyClient(clicontext.Context, c.Builder, c.BuilderAddress, &config) diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 67f0bbc42..866b01d1e 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -207,13 +207,14 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * AutoRemove: true, } - if bc.SetCA { + if len(bc.Registries) > 0 { hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ Type: mount.TypeBind, Source: fileutil.DefaultConfigDir, Target: buildkitdCertPath, }) } + cfg, err := bc.String() if err != nil { return "", errors.Wrap(err, "failed to generate buildkit config") diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 3f14fc7e4..fb99e1559 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -83,7 +83,7 @@ func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name string, b if !existed { buildkitdCmd := "buildkitd" // TODO: support mirror CA keypair - if bc.Registry != "" || bc.Mirror != "" || bc.UseHTTP { + if len(bc.Registries) > 0 { cfg, err := bc.String() if err != nil { return "", errors.Wrap(err, "failed to generate buildkit config") diff --git a/pkg/util/buildkitutil/buildkit.go b/pkg/util/buildkitutil/buildkit.go index 161dbd966..e5998eb6a 100644 --- a/pkg/util/buildkitutil/buildkit.go +++ b/pkg/util/buildkitutil/buildkit.go @@ -20,21 +20,37 @@ import ( ) const buildkitConfigTemplate = ` -[registry."{{ if .Registry }}{{ .Registry }}{{ else }}docker.io{{ end }}"]{{ if .Mirror }} - mirrors = ["{{ .Mirror }}"]{{ end }} - http = {{ .UseHTTP }} - {{ if .SetCA}}ca=["/etc/registry/ca.pem"] - [[registry."{{ if .Registry }}{{ .Registry }}{{ else }}docker.io{{ end }}".keypair]] - key="/etc/registry/key.pem" - cert="/etc/registry/cert.pem" - {{ end }} +[registry] +{{- range $registry := .Registries }} + [registry."{{ if $registry.Name }}{{ $registry.Name }}{{ else }}docker.io{{ end }}"] + {{- if $registry.UseHttp }} + http = true + {{- end }} + {{- if $registry.Mirror }} + mirrors = ["{{ $registry.Mirror }}"] + {{- end }} + {{- if $registry.Ca }} + ca=["/etc/registry/{{ $registry.Name }}_ca.pem"] + {{- end }} + {{- if and $registry.Cert $registry.Key }} + [[registry."{{ if $registry.Name }}{{ $registry.Name }}{{ else }}docker.io{{ end }}".keypair]] + key="/etc/registry/{{ $registry.Name }}_key.pem" + cert="/etc/registry/{{ $registry.Name }}_cert.pem" + {{- end }} +{{- end }} ` +type Registry struct { + Name string `json:"name"` + Ca string `json:"ca"` + Cert string `json:"cert"` + Key string `json:"key"` + UseHttp bool `json:"use_http"` + Mirror string `json:"mirror"` +} + type BuildkitConfig struct { - Registry string - Mirror string - UseHTTP bool - SetCA bool + Registries []Registry `json:"registries"` } func (c *BuildkitConfig) String() (string, error) { diff --git a/pkg/util/buildkitutil/buildkit_test.go b/pkg/util/buildkitutil/buildkit_test.go index f613e1d16..147e2c9c0 100644 --- a/pkg/util/buildkitutil/buildkit_test.go +++ b/pkg/util/buildkitutil/buildkit_test.go @@ -28,36 +28,94 @@ func TestBuildkitWithRegistry(t *testing.T) { }{ { BuildkitConfig{ - Registry: "registry.example.com", - Mirror: "https://mirror.example.com", - UseHTTP: true, + Registries: []Registry{ + { + Name: "registry.example.com", + Ca: "/etc/registry/ca.pem", + Cert: "/etc/registry/cert.pem", + Key: "/etc/registry/key.pem", + UseHttp: false, + Mirror: "https://mirror.example.com", + }, + }, }, ` -[registry."registry.example.com"] - mirrors = ["https://mirror.example.com"] - http = true +[registry] + [registry."registry.example.com"] + mirrors = ["https://mirror.example.com"] + ca=["/etc/registry/registry.example.com_ca.pem"] + [[registry."registry.example.com".keypair]] + key="/etc/registry/registry.example.com_key.pem" + cert="/etc/registry/registry.example.com_cert.pem" `, }, { BuildkitConfig{ - Registry: "registry.example.com", - SetCA: true, + Registries: []Registry{ + { + Name: "registry.example.com", + UseHttp: true, + Mirror: "https://mirror.example.com", + }, + { + Name: "docker.io", + Mirror: "https://mirror.example.com", + }, + }, }, ` -[registry."registry.example.com"] - http = false - ca=["/etc/registry/ca.pem"] - [[registry."registry.example.com".keypair]] - key="/etc/registry/key.pem" - cert="/etc/registry/cert.pem" +[registry] + [registry."registry.example.com"] + http = true + mirrors = ["https://mirror.example.com"] + [registry."docker.io"] + mirrors = ["https://mirror.example.com"] `, }, { - BuildkitConfig{}, + BuildkitConfig{ + Registries: []Registry{}, + }, ` -[registry."docker.io"] - http = false - `, +[registry] +`, + }, + { + BuildkitConfig{ + Registries: []Registry{ + { + Name: "registry1.example.com", + Ca: "/etc/registry/ca1.pem", + Cert: "/etc/registry/cert1.pem", + Key: "/etc/registry/key1.pem", + UseHttp: true, + Mirror: "https://mirror.example.com", + }, + { + Name: "registry2.example.com", + Ca: "/etc/registry/ca2.pem", + Cert: "/etc/registry/cert2.pem", + Key: "/etc/registry/key2.pem", + Mirror: "https://mirror.example.com", + }, + }, + }, + ` +[registry] + [registry."registry1.example.com"] + http = true + mirrors = ["https://mirror.example.com"] + ca=["/etc/registry/registry1.example.com_ca.pem"] + [[registry."registry1.example.com".keypair]] + key="/etc/registry/registry1.example.com_key.pem" + cert="/etc/registry/registry1.example.com_cert.pem" + [registry."registry2.example.com"] + mirrors = ["https://mirror.example.com"] + ca=["/etc/registry/registry2.example.com_ca.pem"] + [[registry."registry2.example.com".keypair]] + key="/etc/registry/registry2.example.com_key.pem" + cert="/etc/registry/registry2.example.com_cert.pem" +`, }, } From 67ce1d7cd5c234a59294a4bba02df35fa190bb2b Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 4 Jul 2023 18:37:51 +0800 Subject: [PATCH 184/355] fix: mount buildkitd toml file (#1686) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/bootstrap.go | 8 +++++++- pkg/driver/docker/docker.go | 26 +++++++++++--------------- pkg/util/buildkitutil/buildkit.go | 23 +++++++++++++++++++++-- pkg/util/buildkitutil/buildkit_test.go | 6 +++--- 4 files changed, 42 insertions(+), 21 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 067b74a04..3a9fe126d 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -392,7 +392,13 @@ func buildkit(clicontext *cli.Context) error { Ca: "/etc/registry", Cert: "/etc/registry", Key: "/etc/registry", - UseHttp: clicontext.Bool("use-http"), + UseHTTP: clicontext.Bool("use-http"), + Mirror: clicontext.String("dockerhub-mirror"), + }) + } else if len(clicontext.String("dockerhub-mirror")) != 0 { + config.Registries = append(config.Registries, buildkitutil.Registry{ + Name: clicontext.String("registry"), + UseHTTP: clicontext.Bool("use-http"), Mirror: clicontext.String("dockerhub-mirror"), }) } diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 866b01d1e..4f2a749d4 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -17,9 +17,9 @@ package docker import ( "context" "encoding/json" - "fmt" "io" "os" + "path/filepath" "regexp" "strconv" "strings" @@ -40,7 +40,7 @@ import ( "github.com/tensorchord/envd/pkg/util/fileutil" ) -const buildkitdCertPath = "/etc/registry" +const buildkitdConfigPath = "/etc/registry" var ( anchoredIdentifierRegexp = regexp.MustCompile(`^([a-f0-9]{64})$`) @@ -205,26 +205,22 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * hostConfig := &container.HostConfig{ Privileged: true, AutoRemove: true, + Mounts: []mount.Mount{ + { + Type: mount.TypeBind, + Source: fileutil.DefaultConfigDir, + Target: buildkitdConfigPath, + }, + }, } - if len(bc.Registries) > 0 { - hostConfig.Mounts = append(hostConfig.Mounts, mount.Mount{ - Type: mount.TypeBind, - Source: fileutil.DefaultConfigDir, - Target: buildkitdCertPath, - }) - } - - cfg, err := bc.String() + err := bc.Save() if err != nil { return "", errors.Wrap(err, "failed to generate buildkit config") } config.Entrypoint = []string{ - "/bin/sh", - "-c", - fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg), + "buildkitd", "--config", filepath.Join(buildkitdConfigPath, "buildkitd.toml"), } - logger.Debugf("setting buildkit config: %s", cfg) created, _ := c.Exists(ctx, name) if created { err := c.ContainerStart(ctx, name, types.ContainerStartOptions{}) diff --git a/pkg/util/buildkitutil/buildkit.go b/pkg/util/buildkitutil/buildkit.go index e5998eb6a..1a3b8b92d 100644 --- a/pkg/util/buildkitutil/buildkit.go +++ b/pkg/util/buildkitutil/buildkit.go @@ -15,15 +15,20 @@ package buildkitutil import ( + "os" "strings" "text/template" + + "github.com/cockroachdb/errors" + + "github.com/tensorchord/envd/pkg/util/fileutil" ) const buildkitConfigTemplate = ` [registry] {{- range $registry := .Registries }} [registry."{{ if $registry.Name }}{{ $registry.Name }}{{ else }}docker.io{{ end }}"] - {{- if $registry.UseHttp }} + {{- if $registry.UseHTTP }} http = true {{- end }} {{- if $registry.Mirror }} @@ -45,7 +50,7 @@ type Registry struct { Ca string `json:"ca"` Cert string `json:"cert"` Key string `json:"key"` - UseHttp bool `json:"use_http"` + UseHTTP bool `json:"use_http"` Mirror string `json:"mirror"` } @@ -62,3 +67,17 @@ func (c *BuildkitConfig) String() (string, error) { err = tmpl.Execute(&config, c) return config.String(), err } + +func (c *BuildkitConfig) Save() error { + text, err := c.String() + if err != nil { + return err + } + + path, err := fileutil.ConfigFile("buildkitd.toml") + if err != nil { + return errors.Wrap(err, "failed to get the buildkitd config file") + } + err = os.WriteFile(path, []byte(text), 0644) + return err +} diff --git a/pkg/util/buildkitutil/buildkit_test.go b/pkg/util/buildkitutil/buildkit_test.go index 147e2c9c0..1101bb2a6 100644 --- a/pkg/util/buildkitutil/buildkit_test.go +++ b/pkg/util/buildkitutil/buildkit_test.go @@ -34,7 +34,7 @@ func TestBuildkitWithRegistry(t *testing.T) { Ca: "/etc/registry/ca.pem", Cert: "/etc/registry/cert.pem", Key: "/etc/registry/key.pem", - UseHttp: false, + UseHTTP: false, Mirror: "https://mirror.example.com", }, }, @@ -54,7 +54,7 @@ func TestBuildkitWithRegistry(t *testing.T) { Registries: []Registry{ { Name: "registry.example.com", - UseHttp: true, + UseHTTP: true, Mirror: "https://mirror.example.com", }, { @@ -88,7 +88,7 @@ func TestBuildkitWithRegistry(t *testing.T) { Ca: "/etc/registry/ca1.pem", Cert: "/etc/registry/cert1.pem", Key: "/etc/registry/key1.pem", - UseHttp: true, + UseHTTP: true, Mirror: "https://mirror.example.com", }, { From fb7a362cc15e434e254fe3e8c7fe453962a7a661 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 18:44:17 +0800 Subject: [PATCH 185/355] docs: updated CHANGELOG.md (#1687) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64e9265b5..5895d8dc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## v0.3.31 (2023-07-04) + + * [67ce1d7](https://github.com/tensorchord/envd/commit/67ce1d7cd5c234a59294a4bba02df35fa190bb2b) fix: mount buildkitd toml file (#1686) + * [cde4632](https://github.com/tensorchord/envd/commit/cde4632b2954b510e72efe2a7373d2c1d37456e9) support using json for registry config (#1680) + * [b5f9a49](https://github.com/tensorchord/envd/commit/b5f9a49d911ce5ee1e8859968f449835d4147c5f) Fix PATH Order (#1679) + +### Contributors + + * Keming + * Richard Li + ## v0.3.30 (2023-06-29) From 9f5399c0e2bdab8ce1f44d881b0a9839283f762e Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 6 Jul 2023 09:31:55 +0800 Subject: [PATCH 186/355] docs: fix the cli doc build error (#1688) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/bootstrap.go | 6 +++--- pkg/app/build.go | 4 ++-- pkg/app/run.go | 2 +- pkg/app/up.go | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 3a9fe126d..670229e5f 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -48,12 +48,12 @@ var CommandBootstrap = &cli.Command{ }, &cli.BoolFlag{ Name: "with-autocomplete", - Usage: "Add envd autocompletions", + Usage: "Add envd auto-completions", Value: true, }, &cli.StringFlag{ Name: "dockerhub-mirror", - Usage: "Dockerhub mirror to use", + Usage: "DockerHub mirror to use", Aliases: []string{"m"}, }, &cli.StringFlag{ @@ -63,7 +63,7 @@ var CommandBootstrap = &cli.Command{ }, &cli.StringSliceFlag{ Name: "ssh-keypair", - Usage: fmt.Sprintf("Manually specify ssh key pair as `publicKey,privateKey`. Envd will generate a keypair at %s and %s if not specified", + Usage: fmt.Sprintf("Manually specify ssh key pair as `publicKey,privateKey`. envd will generate a keypair at %s and %s if not specified", sshconfig.GetPublicKeyOrPanic(), sshconfig.GetPrivateKeyOrPanic()), Aliases: []string{"k"}, }, diff --git a/pkg/app/build.go b/pkg/app/build.go index 1db90d5bd..ecdd70f58 100644 --- a/pkg/app/build.go +++ b/pkg/app/build.go @@ -83,12 +83,12 @@ To build and push the image to a registry: // https://github.com/urfave/cli/issues/1134#issuecomment-1191407527 &cli.StringFlag{ Name: "export-cache", - Usage: "Export the cache (e.g. type=registry,ref=<image>)", + Usage: "Export the cache (e.g. `type=registry,ref=<image>`)", Aliases: []string{"ec"}, }, &cli.StringFlag{ Name: "import-cache", - Usage: "Import the cache (e.g. type=registry,ref=<image>)", + Usage: "Import the cache (e.g. `type=registry,ref=<image>`)", Aliases: []string{"ic"}, }, &cli.StringFlag{ diff --git a/pkg/app/run.go b/pkg/app/run.go index baa2fe1e8..0283ceaee 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -80,7 +80,7 @@ var CommandCreate = &cli.Command{ }, &cli.StringFlag{ Name: "host", - Usage: "Assign the host address for environment ssh acesss server listening", + Usage: "Assign the host address for the environment SSH access server listening", Value: envd.Localhost, }, &cli.IntFlag{ diff --git a/pkg/app/up.go b/pkg/app/up.go index 27043e109..024405492 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -128,18 +128,18 @@ var CommandUp = &cli.Command{ }, &cli.StringFlag{ Name: "host", - Usage: "Assign the host address for environment ssh acesss server listening", + Usage: "Assign the host address for the environment SSH access server listening", Value: envd.Localhost, }, // https://github.com/urfave/cli/issues/1134#issuecomment-1191407527 &cli.StringFlag{ Name: "export-cache", - Usage: "Export the cache (e.g. type=registry,ref=<image>)", + Usage: "Export the cache (e.g. `type=registry,ref=<image>`)", Aliases: []string{"ec"}, }, &cli.StringFlag{ Name: "import-cache", - Usage: "Import the cache (e.g. type=registry,ref=<image>)", + Usage: "Import the cache (e.g. `type=registry,ref=<image>`)", Aliases: []string{"ic"}, }, &cli.StringFlag{ From 2d69499f0a3d5e701ec83565787cac6e31728c49 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 09:55:48 +0800 Subject: [PATCH 187/355] docs: updated CHANGELOG.md (#1689) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5895d8dc9..18a8940ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v0.3.32 (2023-07-06) + + +### Contributors + + ## v0.3.31 (2023-07-04) * [67ce1d7](https://github.com/tensorchord/envd/commit/67ce1d7cd5c234a59294a4bba02df35fa190bb2b) fix: mount buildkitd toml file (#1686) From 3f67b764a044bcea360c80c91a6d9ca11bf9206f Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 6 Jul 2023 11:02:28 +0800 Subject: [PATCH 188/355] chore: fix the release artifact name (#1691) * chore: fix the release artifact name Signed-off-by: Keming <kemingyang@tensorchord.ai> * rm space Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .goreleaser.yaml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index e6f888ee8..2fc981a3e 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -42,8 +42,7 @@ archives: builds: - envd name_template: >- - {{ .Binary }}_ - {{ .Version }}_ + {{ .Binary }}_{{ .Version }}_ {{- title .Os }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "386" }}i386 @@ -53,8 +52,7 @@ archives: builds: - envd-sshd name_template: >- - {{ .Binary }}_ - {{ .Version }}_ + {{ .Binary }}_{{ .Version }}_ {{- title .Os }}_ {{- if eq .Arch "amd64" }}x86_64 {{- else if eq .Arch "386" }}i386 From 2e2b1b068317b4568ffe1dc6b2d17da997f8baa9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 6 Jul 2023 11:06:10 +0800 Subject: [PATCH 189/355] docs: updated CHANGELOG.md (#1692) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18a8940ff..4e849b223 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v0.3.33 (2023-07-06) + + +### Contributors + + ## v0.3.32 (2023-07-06) From f33d8adefcfae815e4d6ca17bd89791d6044df87 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:41:03 +0800 Subject: [PATCH 190/355] chore(deps): bump github.com/docker/cli from 24.0.1+incompatible to 24.0.4+incompatible (#1694) chore(deps): bump github.com/docker/cli Bumps [github.com/docker/cli](https://github.com/docker/cli) from 24.0.1+incompatible to 24.0.4+incompatible. - [Commits](https://github.com/docker/cli/compare/v24.0.1...v24.0.4) --- updated-dependencies: - dependency-name: github.com/docker/cli dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 88bd3cd00..f934322e2 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/containerd/containerd v1.7.2 github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v24.0.1+incompatible + github.com/docker/cli v24.0.4+incompatible github.com/docker/docker v23.0.3+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 diff --git a/go.sum b/go.sum index 5b60c761e..0c6fdbf3d 100644 --- a/go.sum +++ b/go.sum @@ -319,8 +319,8 @@ github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v24.0.1+incompatible h1:uVl5Xv/39kZJpDo9VaktTOYBc702sdYYF33FqwUG/dM= -github.com/docker/cli v24.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.4+incompatible h1:Y3bYF9ekNTm2VFz5U/0BlMdJy73D+Y1iAAZ8l63Ydzw= +github.com/docker/cli v24.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From 5379d2fc7e46c8350c9d2d91fe93d91922dac79c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:41:20 +0800 Subject: [PATCH 191/355] chore(deps): bump golang.org/x/crypto from 0.10.0 to 0.11.0 (#1695) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.10.0 to 0.11.0. - [Commits](https://github.com/golang/crypto/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index f934322e2..3ff2f0717 100644 --- a/go.mod +++ b/go.mod @@ -44,9 +44,9 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.10.0 + golang.org/x/crypto v0.11.0 golang.org/x/sync v0.3.0 - golang.org/x/term v0.9.0 + golang.org/x/term v0.10.0 golang.org/x/time v0.3.0 ) @@ -188,8 +188,8 @@ require ( golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.10.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.9.0 // indirect - golang.org/x/text v0.10.0 // indirect + golang.org/x/sys v0.10.0 // indirect + golang.org/x/text v0.11.0 // indirect golang.org/x/tools v0.9.3 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect diff --git a/go.sum b/go.sum index 0c6fdbf3d..17e5e7bca 100644 --- a/go.sum +++ b/go.sum @@ -890,8 +890,8 @@ golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.10.0 h1:LKqV2xt9+kDzSTfOhx4FrkEBcMrAgHSYgzywV9zcGmM= -golang.org/x/crypto v0.10.0/go.mod h1:o4eNf7Ede1fv+hwOwZsTHl9EsPFO6q6ZvYR8vYfY45I= +golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= +golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1130,16 +1130,16 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0 h1:KS/R3tvhPqvJvwcKfnBHJwwthS11LRhmM5D59eEXa0s= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.9.0 h1:GRRCnKYhdQrD8kfRAdQ6Zcw1P0OcELxGLKJvtjVMZ28= -golang.org/x/term v0.9.0/go.mod h1:M6DEAAIenWoTxdKrOltXcmDY3rSplQUkrvaDU5FcQyo= +golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= +golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1151,8 +1151,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.10.0 h1:UpjohKhiEgNc0CSauXmwYftY1+LlaC75SJwh0SgCX58= -golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From a817e6aadb5362eb424e75f135a750ff418862f7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jul 2023 11:49:41 +0800 Subject: [PATCH 192/355] chore(deps): bump crate-ci/typos from 1.15.9 to 1.15.10 (#1698) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.15.9 to 1.15.10. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.15.9...v1.15.10) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index c429760e4..09a55f451 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.15.9 + uses: crate-ci/typos@v1.15.10 with: config: ./typos.toml lint: From 0ff9405d607e1f4a3b1c141c8ea80d5d23e652a7 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 11 Jul 2023 23:09:47 +0800 Subject: [PATCH 193/355] feat(v1): disable diff/merge op for moby builder (#1699) * feat(v1): disable diff/merge op for moby builder Signed-off-by: Keming <kemingyang@tensorchord.ai> * add e2e moby test Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- e2e/v1/cli/moby_test.go | 63 +++++++++++++++++++++++ e2e/v1/cli/testdata/build-test/build.envd | 3 +- pkg/lang/ir/v1/compile.go | 40 +++++++++----- pkg/lang/ir/v1/editor.go | 11 ++-- pkg/lang/ir/v1/system.go | 38 ++++++++------ pkg/lang/ir/v1/types.go | 4 ++ 6 files changed, 120 insertions(+), 39 deletions(-) create mode 100644 e2e/v1/cli/moby_test.go diff --git a/e2e/v1/cli/moby_test.go b/e2e/v1/cli/moby_test.go new file mode 100644 index 000000000..692fcbff6 --- /dev/null +++ b/e2e/v1/cli/moby_test.go @@ -0,0 +1,63 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package cli + +import ( + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/pkg/home" + "github.com/tensorchord/envd/pkg/types" +) + +var _ = Describe("e2e moby builder test", Ordered, func() { + exampleName := "build-test" + defaultContext := "default" + mobyContext := "envd-test-moby" + ctx := types.Context{ + Name: mobyContext, + Builder: types.BuilderTypeMoby, + Runner: types.RunnerTypeDocker, + } + + BeforeAll(func() { + Expect(home.Initialize()).To(Succeed()) + err := home.GetManager().ContextCreate(ctx, true) + Expect(err).NotTo(HaveOccurred()) + }) + + It("should find a new context", func() { + ctx, err := home.GetManager().ContextGetCurrent() + Expect(err).NotTo(HaveOccurred()) + Expect(ctx.Name).To(Equal(mobyContext)) + Expect(ctx.Builder).To(Equal(types.BuilderTypeMoby)) + }) + + It("build images with moby", func() { + e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), "e2e") + e.BuildImage(true)() + }) + + AfterAll(func() { + err := home.GetManager().ContextUse(defaultContext) + Expect(err).NotTo(HaveOccurred()) + err = home.GetManager().ContextRemove(mobyContext) + Expect(err).NotTo(HaveOccurred()) + context, err := home.GetManager().ContextGetCurrent() + Expect(err).NotTo(HaveOccurred()) + Expect(context.Name).To(Equal(defaultContext)) + }) +}) diff --git a/e2e/v1/cli/testdata/build-test/build.envd b/e2e/v1/cli/testdata/build-test/build.envd index d1f3175fa..27814172b 100644 --- a/e2e/v1/cli/testdata/build-test/build.envd +++ b/e2e/v1/cli/testdata/build-test/build.envd @@ -2,6 +2,7 @@ def build(): - base(dev=True) + base() + install.apt_packages(name=["htop"]) install.conda() install.python() diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index a188d3992..fcadd94b8 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -29,6 +29,7 @@ import ( servertypes "github.com/tensorchord/envd-server/api/types" "github.com/tensorchord/envd/pkg/config" + "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/lang/ir" "github.com/tensorchord/envd/pkg/progress/compileui" "github.com/tensorchord/envd/pkg/types" @@ -113,10 +114,18 @@ func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, if err != nil { return nil, errors.Wrap(err, "failed to create compileui") } + c, err := home.GetManager().ContextGetCurrent() + if err != nil { + return nil, errors.Wrap(err, "failed to get the current envd context") + } + g.Writer = w g.EnvironmentName = envName g.PublicKeyPath = pub g.Platform = platform + if c.Builder == types.BuilderTypeMoby { + g.DisableMergeOp = true + } uid, gid, err := g.getUIDGID() if err != nil { @@ -308,24 +317,29 @@ func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { } systemPackages := g.compileSystemPackages(aptMirror) - lang, err := g.compileLanguage(aptMirror) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile language") + var language llb.State + if g.DisableMergeOp { + language, err = g.compileLanguage(systemPackages) + if err != nil { + return llb.State{}, errors.Wrap(err, "failed to compile language from system packages") + } + } else { + lang, err := g.compileLanguage(aptMirror) + if err != nil { + return llb.State{}, errors.Wrap(err, "failed to compile language from apt mirror") + } + language = llb.Merge([]llb.State{ + base, + llb.Diff(base, systemPackages, llb.WithCustomName("[internal] install system packages")), + llb.Diff(base, lang, llb.WithCustomName("[internal] prepare language")), + }, llb.WithCustomName("[internal] language environment and system packages")) } - merge := llb.Merge([]llb.State{ - base, - llb.Diff(base, systemPackages, llb.WithCustomName("[internal] install system packages")), - llb.Diff(base, lang, llb.WithCustomName("[internal] prepare language")), - }, llb.WithCustomName("[internal] language environment and system packages")) - packages := g.compileLanguagePackages(merge) + packages := g.compileLanguagePackages(language) if err != nil { return llb.State{}, errors.Wrap(err, "failed to compile language") } - source, err := g.compileExtraSource(packages) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile extra source") - } + source := g.compileExtraSource(packages) copy := g.compileCopy(source) // dev postprocessing: related to UID, which may not be cached diff --git a/pkg/lang/ir/v1/editor.go b/pkg/lang/ir/v1/editor.go index c081fd90d..613d2be2b 100644 --- a/pkg/lang/ir/v1/editor.go +++ b/pkg/lang/ir/v1/editor.go @@ -58,18 +58,13 @@ func (g generalGraph) compileVSCode(root llb.State) (llb.State, error) { } // nolint:unused -func (g *generalGraph) compileJupyter() error { +func (g *generalGraph) compileJupyter() { if g.JupyterConfig == nil { - return nil + return } + // no need to check if `python` is installed since v1 should support user costumed image g.PyPIPackages = append(g.PyPIPackages, []string{"jupyter"}) - for _, language := range g.Languages { - if language.Name == "python" { - return nil - } - } - return errors.Newf("Jupyter is not supported in other languages yet") } func (g generalGraph) generateJupyterCommand(workingDir string) []string { diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index f6ec6a7e8..b555a5da2 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -208,9 +208,23 @@ func (g generalGraph) compileSystemPackages(root llb.State) llb.State { } // nolint:unparam -func (g *generalGraph) compileExtraSource(root llb.State) (llb.State, error) { +func (g *generalGraph) compileExtraSource(root llb.State) llb.State { if len(g.HTTP) == 0 { - return root, nil + return root + } + if g.DisableMergeOp { + for _, httpInfo := range g.HTTP { + src := llb.HTTP( + httpInfo.URL, + llb.Checksum(httpInfo.Checksum), + llb.Filename(httpInfo.Filename), + llb.Chown(g.uid, g.gid), + ) + root = root.File(llb.Copy( + src, "/", g.getExtraSourceDir(), &llb.CopyInfo{CreateDestPath: true}, + )) + } + return root } inputs := []llb.State{} for _, httpInfo := range g.HTTP { @@ -225,7 +239,7 @@ func (g *generalGraph) compileExtraSource(root llb.State) (llb.State, error) { )) } inputs = append(inputs, root) - return llb.Merge(inputs, llb.WithCustomName("[internal] build source layers")), nil + return llb.Merge(inputs, llb.WithCustomName("[internal] build source layers")) } func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { @@ -255,9 +269,8 @@ func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { } func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { - packs := []llb.State{} - // Use default python in the base image if install.python() is not specified. + g.compileJupyter() index := g.compilePyPIIndex(root) pack := g.compilePyPIPackages(index) if g.CondaConfig != nil { @@ -268,21 +281,12 @@ func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { for _, language := range g.Languages { switch language.Name { case "r": - pack = g.installRPackages(root) + pack = g.installRPackages(pack) case "julia": - pack = g.installJuliaPackages(root) + pack = g.installJuliaPackages(pack) } - packs = append(packs, pack) - } - if len(packs) <= 1 { - // there is only one language needs to be installed, thus no need to merge - return pack - } - for i, lang := range g.Languages { - packs[i] = llb.Diff(root, packs[i], llb.WithCustomNamef("[internal] get diff of %s's packages", lang.Name)) } - return llb.Merge(append([]llb.State{root}, packs...), - llb.WithCustomName("[internal] merge packages for all language environments")) + return pack } func (g *generalGraph) compileDevPackages(root llb.State) llb.State { diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index cc869d6a3..7abb1b2ba 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -79,6 +79,10 @@ type generalGraph struct { // e.g. mnist, streamlit-mnist EnvironmentName string + // (v1) disable `merge` op for `moby` builder + // check https://github.com/tensorchord/envd/issues/1693 + DisableMergeOp bool + ir.RuntimeGraph Platform *ocispecs.Platform From c4b1d988fae31fd4110d5e4d1f2d6a64829ae2cf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:38:24 +0800 Subject: [PATCH 194/355] docs: updated CHANGELOG.md (#1700) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e849b223..3d7b388ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## v0.3.34 (2023-07-11) + + * [0ff9405](https://github.com/tensorchord/envd/commit/0ff9405d607e1f4a3b1c141c8ea80d5d23e652a7) feat(v1): disable diff/merge op for moby builder (#1699) + +### Contributors + + * Keming + ## v0.3.33 (2023-07-06) From a0d7bd1a0ef78cfbd87a5a0636e081d5c1aec353 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 11 Jul 2023 23:49:38 +0800 Subject: [PATCH 195/355] chore: revert docker/cli version (#1701) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 3ff2f0717..0a869000a 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/containerd/containerd v1.7.2 github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v24.0.4+incompatible + github.com/docker/cli v24.0.1+incompatible github.com/docker/docker v23.0.3+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 diff --git a/go.sum b/go.sum index 17e5e7bca..22fedf199 100644 --- a/go.sum +++ b/go.sum @@ -319,8 +319,8 @@ github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v24.0.4+incompatible h1:Y3bYF9ekNTm2VFz5U/0BlMdJy73D+Y1iAAZ8l63Ydzw= -github.com/docker/cli v24.0.4+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.1+incompatible h1:uVl5Xv/39kZJpDo9VaktTOYBc702sdYYF33FqwUG/dM= +github.com/docker/cli v24.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From 8f5f20156defa7f660d7e062c8bc08b8e0e6acc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 11 Jul 2023 23:50:29 +0800 Subject: [PATCH 196/355] docs: updated CHANGELOG.md (#1702) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d7b388ac..ecf1b17e1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## v0.3.35 (2023-07-11) + + +### Contributors + + ## v0.3.34 (2023-07-11) * [0ff9405](https://github.com/tensorchord/envd/commit/0ff9405d607e1f4a3b1c141c8ea80d5d23e652a7) feat(v1): disable diff/merge op for moby builder (#1699) From 508960ebd129d0b785ba099383ddbce37d4fa115 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 14 Jul 2023 17:47:31 +0800 Subject: [PATCH 197/355] docs: add v0/v1 comparison, fix `envd context create` builder type (#1703) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- README.md | 21 ++++++++++++++++++++- pkg/app/context_create.go | 2 +- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3460d45a2..a8f71e33b 100644 --- a/README.md +++ b/README.md @@ -147,7 +147,7 @@ def tensorboard( `envd` can be installed with `pip`, or you can download the binary [release](https://github.com/tensorchord/envd/releases) directly. After the installation, please run `envd bootstrap` to bootstrap. ```bash -pip3 install --upgrade envd +pip install --upgrade envd ``` After the installation, please run `envd bootstrap` to bootstrap: @@ -246,6 +246,25 @@ NAME JUPYTER SSH TARGET CONTEXT envd-quick-start http://localhost:42779 envd-quick-start.envd /home/gaocegege/code/envd-quick-start envd-quick-start:dev false <none> <none> Up 54 seconds bd3f6a729e94 ``` +## Difference between v0 and v1 + +> **Note** +> To use the `v1` config file, add `# syntax=v1` to the first line of your `build.envd` file. + +| Features | v0 | v1 | +| --- | --- | --- | +| is default for `envd<v1.0` | ✅ | ❌ | +| support dev | ✅ | ✅ | +| support CUDA | ✅ | ✅ | +| support serving | ⚠️ | ✅ | +| support custom base image | ⚠️ | ✅ | +| support installing multiple languages | ⚠️ | ✅ | +| support `moby` builder | ❌ | ✅ <sup>[(a)](#v1-moby)</sup> | + +> **Note** +> <a name="v1-moby">(a)</a> To use the `moby` builder, you will need to create a new context with `envd context create --name moby-test --builder moby-worker --use`. +> For more information about the `moby` builder, check the [issue-1693](https://github.com/tensorchord/envd/issues/1693). + ## More on documentation 📝 See [envd documentation](https://envd.tensorchord.ai/guide/getting-started.html). diff --git a/pkg/app/context_create.go b/pkg/app/context_create.go index 816a356f2..60bd86fb2 100644 --- a/pkg/app/context_create.go +++ b/pkg/app/context_create.go @@ -35,7 +35,7 @@ var CommandContextCreate = &cli.Command{ }, &cli.StringFlag{ Name: "builder", - Usage: "Builder to use (docker-container, kube-pod, tcp, unix)", + Usage: "Builder to use (docker-container, kube-pod, tcp, unix, moby-worker, nerdctl-container)", Value: string(types.BuilderTypeDocker), }, &cli.StringFlag{ From 27bab03093fcebea3ad519a9b37781dd417ce4be Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:02:35 +0800 Subject: [PATCH 198/355] chore(deps): bump pypa/cibuildwheel from 2.13.1 to 2.14.1 (#1707) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.13.1 to 2.14.1. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.13.1...v2.14.1) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2797c5cfc..7d46a10d6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.13.1 + uses: pypa/cibuildwheel@v2.14.1 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From c857850fd9cab016be7e95be618c91f3f6a39fb3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:03:17 +0800 Subject: [PATCH 199/355] chore(deps): bump crate-ci/typos from 1.15.10 to 1.16.1 (#1706) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.15.10 to 1.16.1. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.15.10...v1.16.1) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 09a55f451..37af28f40 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.15.10 + uses: crate-ci/typos@v1.16.1 with: config: ./typos.toml lint: From 854798c5b368505ea81eb040a5584f39eaee1d68 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 18 Jul 2023 11:09:28 +0800 Subject: [PATCH 200/355] feat(v1): support moby pushing image (#1708) * fix: moby output type Signed-off-by: Keming <kemingyang@tensorchord.ai> * support push for moby Signed-off-by: Keming <kemingyang@tensorchord.ai> * format Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/build.go | 6 ++-- pkg/builder/build.go | 42 +++++++++++++++++++------ pkg/driver/client.go | 2 +- pkg/driver/docker/docker.go | 59 ++++++++++++++++++++++++++++++++++- pkg/driver/nerdctl/nerdctl.go | 3 ++ pkg/envd/docker.go | 12 +++---- pkg/envd/envdserver.go | 8 ++--- pkg/envd/types.go | 30 +++++++++++------- 8 files changed, 125 insertions(+), 37 deletions(-) diff --git a/pkg/app/build.go b/pkg/app/build.go index ecdd70f58..1996871b7 100644 --- a/pkg/app/build.go +++ b/pkg/app/build.go @@ -72,7 +72,7 @@ To build and push the image to a registry: }, &cli.StringFlag{ Name: "output", - Usage: "Output destination (e.g. type=tar,dest=path,push=true)", + Usage: "Output destination (e.g. `type=tar,dest=path,push=true`)", Aliases: []string{"o"}, }, &cli.BoolFlag{ @@ -93,8 +93,8 @@ To build and push the image to a registry: }, &cli.StringFlag{ Name: "platform", - Usage: `Specify the target platforms for the build output (for example, windows/amd64 or linux/amd64,darwin/arm64). - Build images with same tags could cause image overwriting, platform suffixes will be added to differentiate the images.`, + Usage: `Specify the target platforms for the build output (for example, "windows/amd64" or "linux/amd64,darwin/arm64"). +Build images with same tags could cause image overwriting, platform suffixes will be added to differentiate the images.`, DefaultText: runtimeutil.GetRuntimePlatform(), }, }, diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 39e1cc53b..9594cc8b2 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -252,7 +252,7 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err } } defer pipeW.Close() - solveOpt := constructSolveOpt(ce, entry, b, attachable) + solveOpt := constructSolveOpt(ce, &entry, b, attachable) _, err := b.Client.Build(ctx, solveOpt, "envd", b.BuildFunc(), pw.Status()) if err != nil { err = errors.Wrap(&BuildkitdErr{err: err}, "Buildkit error") @@ -281,13 +281,31 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err default: func(entry client.ExportEntry) { eg.Go(func() error { - solveOpt := constructSolveOpt(ce, entry, b, attachable) + solveOpt := constructSolveOpt(ce, &entry, b, attachable) _, err := b.Client.Build(ctx, solveOpt, "envd", b.BuildFunc(), pw.Status()) if err != nil { err = errors.Wrap(err, "failed to solve LLB") return err } b.logger.Debug("llb def is solved successfully") + + // push the image if it's moby builder and push=true + if !(entry.Type == "moby" && entry.Attrs["push"] == "true") { + return nil + } + b.logger.Debug("pushing image to registry") + client, err := docker.NewClient(ctx) + if err != nil { + err = errors.Wrap(err, "failed to init docker client") + b.logger.Error(err) + return err + } + if err = client.PushImage(ctx, entry.Attrs["name"], b.Platform); err != nil { + err = errors.Wrap(err, "failed to push image") + b.logger.Error(err) + return err + } + b.logger.Debug("pushed image:", entry.Attrs["name"]) return nil }) }(entry) @@ -315,20 +333,24 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err return nil } -func constructSolveOpt(ce []client.CacheOptionsEntry, entry client.ExportEntry, +func constructSolveOpt(ce []client.CacheOptionsEntry, entry *client.ExportEntry, b generalBuilder, attachable []session.Attachable) client.SolveOpt { c, _ := home.GetManager().ContextGetCurrent() - if entry.Attrs == nil && c.Builder == types.BuilderTypeMoby { - entry = client.ExportEntry{ - Type: "moby", - Attrs: map[string]string{ - "name": b.Tag, - }, + if c.Builder == types.BuilderTypeMoby { + if entry.Attrs == nil { + entry = &client.ExportEntry{ + Type: "moby", + Attrs: map[string]string{ + "name": b.Tag, + }, + } + } else if entry.Type == "image" { + entry.Type = "moby" } } opt := client.SolveOpt{ CacheExports: ce, - Exports: []client.ExportEntry{entry}, + Exports: []client.ExportEntry{*entry}, LocalDirs: map[string]string{ flag.FlagCacheDir: home.GetManager().CacheDir(), flag.FlagBuildContext: b.BuildContextDir, diff --git a/pkg/driver/client.go b/pkg/driver/client.go index 349ed9564..1876fb9d3 100644 --- a/pkg/driver/client.go +++ b/pkg/driver/client.go @@ -33,7 +33,7 @@ type Client interface { GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (types.ImageSummary, error) RemoveImage(ctx context.Context, image string) error - + PushImage(ctx context.Context, image, platform string) error PruneImage(ctx context.Context) (types.ImagesPruneReport, error) Stats(ctx context.Context, cname string, statChan chan<- *Stats, done <-chan bool) error diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 4f2a749d4..f16cee47f 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -16,7 +16,9 @@ package docker import ( "context" + "encoding/base64" "encoding/json" + "fmt" "io" "os" "path/filepath" @@ -26,6 +28,8 @@ import ( "time" "github.com/cockroachdb/errors" + "github.com/containers/image/v5/docker/reference" + "github.com/containers/image/v5/pkg/docker/config" "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" @@ -36,6 +40,7 @@ import ( "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" + "github.com/tensorchord/envd/pkg/envd" "github.com/tensorchord/envd/pkg/util/buildkitutil" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -68,7 +73,7 @@ please visit https://docs.docker.com/engine/install/linux-postinstall/ for more return dockerClient{cli}, nil } -// Normalize the name accord the spec of docker, It may support normalize imagea and container in the future. +// Normalize the name accord the spec of docker, It may support normalize image and container in the future. func NormalizeName(s string) (string, error) { if ok := anchoredIdentifierRegexp.MatchString(s); ok { return "", errors.Newf("invalid repository name (%s), cannot specify 64-byte hexadecimal strings, please rename it", s) @@ -110,6 +115,58 @@ func (c dockerClient) RemoveImage(ctx context.Context, image string) error { return nil } +func (c dockerClient) PushImage(ctx context.Context, image string, platform string) error { + ref, err := reference.ParseNormalizedNamed(image) + if err != nil { + return errors.Wrap(err, "failed to normalize the image name") + } + auth, err := config.GetCredentialsForRef(nil, ref) + if err != nil { + return errors.Wrap(err, "failed to get credentials for image") + } + buf, err := json.Marshal(auth) + if err != nil { + return errors.Wrap(err, "failed to marshal auth struct") + } + reader, err := c.ImagePush(ctx, image, types.ImagePushOptions{ + RegistryAuth: base64.URLEncoding.EncodeToString(buf), + Platform: platform, + }) + if err != nil { + logrus.WithError(err).Errorf("failed to push image %s", image) + return err + } + + bar := envd.InitProgressBar(0) + + defer func() { + reader.Close() + bar.Finish() + }() + + decoder := json.NewDecoder(reader) + stats := new(jsonmessage.JSONMessage) + for err := decoder.Decode(stats); !errors.Is(err, io.EOF); err = decoder.Decode(stats) { + if err != nil { + return err + } + if stats.Error != nil { + return stats.Error + } + + if stats.Status != "" { + if stats.ID == "" { + bar.UpdateTitle(stats.Status) + } else { + bar.UpdateTitle(fmt.Sprintf("Pushing image => [%s] %s %s", stats.ID, stats.Status, stats.Progress)) + } + } + + stats = new(jsonmessage.JSONMessage) + } + return nil +} + func (c dockerClient) GetImage(ctx context.Context, image string) (types.ImageSummary, error) { images, err := c.ImageList(ctx, types.ImageListOptions{ Filters: dockerFiltersWithName(image), diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index fb99e1559..2d134581b 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -118,6 +118,9 @@ func (nc *nerdctlClient) GetImageWithCacheHashLabel(ctx context.Context, image s func (nc *nerdctlClient) RemoveImage(ctx context.Context, image string) error { return nil } +func (nc *nerdctlClient) PushImage(ctx context.Context, image, platform string) error { + return nil +} func (nc *nerdctlClient) PruneImage(ctx context.Context) (types.ImagesPruneReport, error) { return types.ImagesPruneReport{}, nil } diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index a955c8015..b7eebf749 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -358,8 +358,8 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes }) bar := InitProgressBar(5) - defer bar.finish() - bar.updateTitle("configure the environment") + defer bar.Finish() + bar.UpdateTitle("configure the environment") if so.NumGPU != 0 { nvruntimeExists, err := e.GPUEnabled(ctx) @@ -574,7 +574,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes }) logger.Debugf("starting %s container", so.EnvironmentName) - bar.updateTitle("create the environment") + bar.UpdateTitle("create the environment") resp, err := e.ContainerCreate(ctx, config, hostConfig, nil, nil, so.EnvironmentName) if err != nil { return nil, errors.Wrap(err, "failed to create the container") @@ -584,7 +584,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes logger.Warnf("run with warnings: %s", w) } - bar.updateTitle("start the environment") + bar.UpdateTitle("start the environment") if err := e.ContainerStart( ctx, resp.ID, dockertypes.ContainerStartOptions{}); err != nil { errCause := errors.UnwrapAll(err) @@ -601,13 +601,13 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes return nil, errors.Wrap(err, "failed to inspect the container") } - bar.updateTitle("wait for the environment to start") + bar.UpdateTitle("wait for the environment to start") if err := e.WaitUntilRunning( ctx, container.Name, so.Timeout); err != nil { return nil, errors.Wrap(err, "failed to wait until the container is running") } - bar.updateTitle("attach the environment") + bar.UpdateTitle("attach the environment") result := &StartResult{ SSHPort: sshPortInHost, Address: container.NetworkSettings.IPAddress, diff --git a/pkg/envd/envdserver.go b/pkg/envd/envdserver.go index c24f2328d..00417fe75 100644 --- a/pkg/envd/envdserver.go +++ b/pkg/envd/envdserver.go @@ -298,20 +298,20 @@ func (e *envdServerEngine) StartEnvd(ctx context.Context, so StartOptions) (*Sta logrus.WithField("req", req).Debug("send request to create new env") bar := InitProgressBar(3) - defer bar.finish() - bar.updateTitle("create environment") + defer bar.Finish() + bar.UpdateTitle("create environment") resp, err := e.EnvironmentCreate(ctx, req) if err != nil { return nil, errors.Wrap(err, "failed to create the environment") } - bar.updateTitle("wait for the remote environment to start") + bar.UpdateTitle("wait for the remote environment to start") if err := e.WaitUntilRunning( ctx, resp.Created.Name, so.Timeout); err != nil { return nil, errors.Wrap(err, "failed to wait until the container is running") } - bar.updateTitle("attach to the remote environment") + bar.UpdateTitle("attach to the remote environment") result := &StartResult{ SSHPort: 2222, Address: "", diff --git a/pkg/envd/types.go b/pkg/envd/types.go index 6766977a6..8f12ad553 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -73,12 +73,14 @@ type StartResult struct { } type ProgressBar struct { - bar *progressbar.ProgressBar - currStage int - totalStage int - notify chan struct{} + bar *progressbar.ProgressBar + currentStage int + totalStage int + notify chan struct{} } +// InitProgressBar initializes a progress bar. +// If stage <= 0, the progress bar will not show the (current/total) stage information. func InitProgressBar(stage int) *ProgressBar { done := make(chan struct{}) bar := progressbar.NewOptions(-1, @@ -109,16 +111,20 @@ func InitProgressBar(stage int) *ProgressBar { return &b } -func (b *ProgressBar) updateTitle(title string) { - b.currStage += 1 - b.bar.Describe(fmt.Sprintf("[cyan][%d/%d][reset] %s", - b.currStage, - b.totalStage, - title, - )) +func (b *ProgressBar) UpdateTitle(title string) { + if b.totalStage > 0 { + b.currentStage += 1 + b.bar.Describe(fmt.Sprintf("[cyan][%d/%d][reset] %s", + b.currentStage, + b.totalStage, + title, + )) + } else { + b.bar.Describe(fmt.Sprintf("[cyan]%s[reset]", title)) + } } -func (b *ProgressBar) finish() { +func (b *ProgressBar) Finish() { b.notify <- struct{}{} if err := b.bar.Finish(); err != nil { logrus.Infof("stop progress bar err: %v\n", err) From 49e8373128667a1e91271762e17581a4a3ab9dc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 18 Jul 2023 23:37:28 +0800 Subject: [PATCH 201/355] docs: updated CHANGELOG.md (#1710) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecf1b17e1..72fd4dd5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## v0.3.36 (2023-07-18) + + * [854798c](https://github.com/tensorchord/envd/commit/854798c5b368505ea81eb040a5584f39eaee1d68) feat(v1): support moby pushing image (#1708) + +### Contributors + + * Keming + ## v0.3.35 (2023-07-11) From c24160a6b2840ea253f4cf3b9cb9a336fb248230 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jul 2023 11:28:14 +0800 Subject: [PATCH 202/355] chore(deps): bump github.com/onsi/gomega from 1.27.8 to 1.27.9 (#1711) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.8 to 1.27.9. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.8...v1.27.9) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 0a869000a..4b46c30d7 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.11.0 - github.com/onsi/gomega v1.27.8 + github.com/onsi/gomega v1.27.9 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 @@ -186,7 +186,7 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect golang.org/x/mod v0.10.0 // indirect - golang.org/x/net v0.10.0 // indirect + golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sys v0.10.0 // indirect golang.org/x/text v0.11.0 // indirect diff --git a/go.sum b/go.sum index 22fedf199..956942251 100644 --- a/go.sum +++ b/go.sum @@ -678,8 +678,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.8 h1:gegWiwZjBsf2DgiSbf5hpokZ98JVDMcWkUiigk6/KXc= -github.com/onsi/gomega v1.27.8/go.mod h1:2J8vzI/s+2shY9XHRApDkdgPo1TKT7P2u6fXeJKFnNQ= +github.com/onsi/gomega v1.27.9 h1:qIyVWbOsvQEye2QCqLsNSeH/5L1RS9vS382erEWfT3o= +github.com/onsi/gomega v1.27.9/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -987,8 +987,8 @@ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= -golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= +golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= From b6b70c8c2fbe6f7b116f0539768abfe165b7b200 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 26 Jul 2023 14:15:11 +0800 Subject: [PATCH 203/355] fix(v1): chown the whole envd conda env to user envd (#1712) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/conda.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index 3966002de..1b6987529 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -154,8 +154,7 @@ func (g generalGraph) compileCondaEnvironment(root llb.State) (llb.State, error) func (g *generalGraph) installConda(root llb.State) llb.State { if g.Dev { // We only create envd user for dev env. - // This directory is related to conda envd env meta (used by `conda env config vars set key=value`) - g.UserDirectories = append(g.UserDirectories, fmt.Sprintf("%s/envs/envd/conda-meta", condaRootPrefix)) + g.UserDirectories = append(g.UserDirectories, fmt.Sprintf("%s/envs/envd", condaRootPrefix)) } if g.CondaConfig.UseMicroMamba { return g.installMicroMamba(root) From cbf341351725775dddefe9efb191b953799efa6f Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 26 Jul 2023 15:44:36 +0800 Subject: [PATCH 204/355] chore: pin ci go version to 1.19.10 to avoid the invalid host header (#1713) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 37af28f40..e185abd51 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -147,7 +147,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: 1.19.10 - name: Cache Go modules uses: actions/cache@preview with: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 19f646944..019bdc6ce 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -269,7 +269,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: 1.19.10 - name: Cache Go modules uses: actions/cache@preview with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7d46a10d6..974bd63e4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 with: - go-version: 1.19 + go-version: 1.19.10 - name: Docker Login uses: docker/login-action@v2 with: From a62d9f2bc073fd810d10d6e0afeeef6f89e9d54f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 16:36:29 +0800 Subject: [PATCH 205/355] chore(deps): bump github.com/hashicorp/go-getter from 1.7.1 to 1.7.2 (#1715) Bumps [github.com/hashicorp/go-getter](https://github.com/hashicorp/go-getter) from 1.7.1 to 1.7.2. - [Release notes](https://github.com/hashicorp/go-getter/releases) - [Changelog](https://github.com/hashicorp/go-getter/blob/main/.goreleaser.yml) - [Commits](https://github.com/hashicorp/go-getter/compare/v1.7.1...v1.7.2) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-getter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 4b46c30d7..5db62878d 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.0 - github.com/hashicorp/go-getter v1.7.1 + github.com/hashicorp/go-getter v1.7.2 github.com/mattn/go-isatty v0.0.19 github.com/moby/buildkit v0.11.6 github.com/moby/term v0.5.0 diff --git a/go.sum b/go.sum index 956942251..c074a9a09 100644 --- a/go.sum +++ b/go.sum @@ -524,8 +524,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.1 h1:SWiSWN/42qdpR0MdhaOc/bLR48PLuP1ZQtYLRlM69uY= -github.com/hashicorp/go-getter v1.7.1/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.2 h1:uJDtyXwEfalmp1PqdxuhZqrNkUyClZAhVeZYTArbqkg= +github.com/hashicorp/go-getter v1.7.2/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= From ecfce510e39992f3a64d7c29ff8c49e4a63c9b77 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 22:50:47 +0800 Subject: [PATCH 206/355] chore(deps): bump github.com/containerd/containerd from 1.7.2 to 1.7.3 (#1716) Bumps [github.com/containerd/containerd](https://github.com/containerd/containerd) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v1.7.2...v1.7.3) --- updated-dependencies: - dependency-name: github.com/containerd/containerd dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5db62878d..b06f89ecc 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/charmbracelet/lipgloss v0.7.1 github.com/cockroachdb/errors v1.10.0 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 - github.com/containerd/containerd v1.7.2 + github.com/containerd/containerd v1.7.3 github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.1+incompatible diff --git a/go.sum b/go.sum index c074a9a09..66b63a729 100644 --- a/go.sum +++ b/go.sum @@ -274,8 +274,8 @@ github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.7.2 h1:UF2gdONnxO8I6byZXDi5sXWiWvlW3D/sci7dTQimEJo= -github.com/containerd/containerd v1.7.2/go.mod h1:afcz74+K10M/+cjGHIVQrCt3RAQhUSCAjJ9iMYhhkuI= +github.com/containerd/containerd v1.7.3 h1:cKwYKkP1eTj54bP3wCdXXBymmKRQMrWjkLSWZZJDa8o= +github.com/containerd/containerd v1.7.3/go.mod h1:32FOM4/O0RkNg7AjQj3hDzN9cUGtu+HMvaKUNiqCZB8= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.4.1 h1:wQnVrjIyQ8vhU2sgOiL5T07jo+ouqc2bnKsv5/EqGhU= From 3345804e0df9fa5c6b417409ab1e5d2fbb6d03ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 31 Jul 2023 22:51:09 +0800 Subject: [PATCH 207/355] chore(deps): bump github.com/onsi/gomega from 1.27.9 to 1.27.10 (#1717) Bumps [github.com/onsi/gomega](https://github.com/onsi/gomega) from 1.27.9 to 1.27.10. - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.27.9...v1.27.10) --- updated-dependencies: - dependency-name: github.com/onsi/gomega dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index b06f89ecc..5fec4bcbd 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.11.0 - github.com/onsi/gomega v1.27.9 + github.com/onsi/gomega v1.27.10 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 diff --git a/go.sum b/go.sum index 66b63a729..cfd07b6fc 100644 --- a/go.sum +++ b/go.sum @@ -678,8 +678,8 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.9 h1:qIyVWbOsvQEye2QCqLsNSeH/5L1RS9vS382erEWfT3o= -github.com/onsi/gomega v1.27.9/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= From af583f4db4b842e3c61001981d4aa066ff8d4e63 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 2 Aug 2023 18:50:42 +0800 Subject: [PATCH 208/355] fix: suppress telemetry send err msg (#1718) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/telemetry/reporter.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/app/telemetry/reporter.go b/pkg/app/telemetry/reporter.go index 4b037f03d..5984517e2 100644 --- a/pkg/app/telemetry/reporter.go +++ b/pkg/app/telemetry/reporter.go @@ -149,7 +149,7 @@ func (r *defaultReporter) Identify() { Timestamp: time.Now(), Traits: segmentio.NewTraits(), }); err != nil { - logrus.Warn("telemetry failed") + logrus.Debug("telemetry failed") return } } @@ -176,7 +176,7 @@ func (r *defaultReporter) Telemetry(command string, fields ...TelemetryField) { field(&t.Properties) } if err := r.client.Enqueue(t); err != nil { - logrus.Warn(err) + logrus.Debug(err) } // make sure the msg can be sent out r.client.Close() From ddc3009c2bd7739bd1bfd6ac4b1c02892daacbe4 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 4 Aug 2023 11:17:38 +0800 Subject: [PATCH 209/355] fix: prune bin from py source dist (#1721) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- MANIFEST.in | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 91bab2ab7..2142d25c8 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,9 +2,14 @@ include LICENSE include README.md include Makefile include .goreleaser.yaml .goreleaser/*.Dockerfile -include pkg/* cmd/* include go.mod go.sum include .GIT_TAG_INFO +graft pkg +graft cmd prune examples +prune bin +prune hack +prune e2e +prune dist prune docs prune .github From f51990e82aaae662d923f9f6a1e6d8bd53c6f7bd Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 4 Aug 2023 16:41:59 +0800 Subject: [PATCH 210/355] feat: add envd app exit handler (#1722) * feat: add envd app exit handler Signed-off-by: Keming <kemingyang@tensorchord.ai> * rm commented code Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix test Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/app.go | 6 ++++++ pkg/driver/docker/docker.go | 6 +++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/pkg/app/app.go b/pkg/app/app.go index 95b9f4509..3a56d70f4 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -155,6 +155,12 @@ func New() EnvdApp { return nil } + internalApp.ExitErrHandler = func(context *cli.Context, err error) { + if err != nil { + logrus.Fatal(err) + } + } + return EnvdApp{ App: *internalApp, } diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index f16cee47f..3d3d1a5ae 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -96,7 +96,11 @@ func NormalizeName(s string) (string, error) { } // remove the spaces s = strings.ReplaceAll(s, " ", "") - return s, nil + name, err := reference.Parse(s) + if err != nil { + return "", errors.Wrapf(err, "failed to parse the name '%s', please provide a valid image name", s) + } + return name.String(), nil } func (c dockerClient) ListImage(ctx context.Context) ([]types.ImageSummary, error) { From 127f399f2ec3cdfa14ce3bf64aee2986953e343b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 4 Aug 2023 17:08:06 +0800 Subject: [PATCH 211/355] docs: updated CHANGELOG.md (#1723) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 72fd4dd5f..e7db0fe8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Changelog +## v0.3.37 (2023-08-04) + + * [f51990e](https://github.com/tensorchord/envd/commit/f51990e82aaae662d923f9f6a1e6d8bd53c6f7bd) feat: add envd app exit handler (#1722) + * [ddc3009](https://github.com/tensorchord/envd/commit/ddc3009c2bd7739bd1bfd6ac4b1c02892daacbe4) fix: prune bin from py source dist (#1721) + * [af583f4](https://github.com/tensorchord/envd/commit/af583f4db4b842e3c61001981d4aa066ff8d4e63) fix: suppress telemetry send err msg (#1718) + * [b6b70c8](https://github.com/tensorchord/envd/commit/b6b70c8c2fbe6f7b116f0539768abfe165b7b200) fix(v1): chown the whole envd conda env to user envd (#1712) + +### Contributors + + * Keming + ## v0.3.36 (2023-07-18) * [854798c](https://github.com/tensorchord/envd/commit/854798c5b368505ea81eb040a5584f39eaee1d68) feat(v1): support moby pushing image (#1708) From 5a9a81989caf29d6a417348a7a76094bbc015f5e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:00:27 +0800 Subject: [PATCH 212/355] chore(deps): bump golang.org/x/term from 0.10.0 to 0.11.0 (#1725) Bumps [golang.org/x/term](https://github.com/golang/term) from 0.10.0 to 0.11.0. - [Commits](https://github.com/golang/term/compare/v0.10.0...v0.11.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 5fec4bcbd..2f7023615 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.11.0 golang.org/x/sync v0.3.0 - golang.org/x/term v0.10.0 + golang.org/x/term v0.11.0 golang.org/x/time v0.3.0 ) @@ -188,7 +188,7 @@ require ( golang.org/x/mod v0.10.0 // indirect golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.10.0 // indirect + golang.org/x/sys v0.11.0 // indirect golang.org/x/text v0.11.0 // indirect golang.org/x/tools v0.9.3 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index cfd07b6fc..77428f716 100644 --- a/go.sum +++ b/go.sum @@ -1130,16 +1130,16 @@ golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.10.0 h1:3R7pNqamzBraeqj/Tj8qt1aQ2HpmlC+Cx/qL/7hn4/c= -golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 89fb990c5407c3d2c9be628e508f27e63d507e3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 13:02:28 +0800 Subject: [PATCH 213/355] chore(deps): bump crate-ci/typos from 1.16.1 to 1.16.2 (#1728) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.1 to 1.16.2. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.1...v1.16.2) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e185abd51..633a0ef23 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.1 + uses: crate-ci/typos@v1.16.2 with: config: ./typos.toml lint: From 7dfd3790b36afde7038b456808bbfd7b187365e2 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 14 Aug 2023 10:16:01 +0800 Subject: [PATCH 214/355] feat: envd up with `--gpus` (#1730) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/up.go | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/pkg/app/up.go b/pkg/app/up.go index 024405492..7015bb745 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -118,9 +118,14 @@ var CommandUp = &cli.Command{ }, &cli.BoolFlag{ Name: "no-gpu", - Usage: "Launch the CPU container", + Usage: "Launch the CPU container even if it's a GPU image", Value: false, }, + &cli.IntFlag{ + Name: "gpus", + Usage: "Number of GPUs used in this environment", + Value: 0, + }, &cli.BoolFlag{ Name: "force", Usage: "Force rebuild and run the container although the previous container is running", @@ -199,15 +204,15 @@ func up(clicontext *cli.Context) error { logrus.Debug("start running the environment") // Do not attach GPU if the flag is set. - gpuEnable := clicontext.Bool("no-gpu") - var gpu bool - if gpuEnable { - gpu = false + disableGPU := clicontext.Bool("no-gpu") + var defaultGPU bool + if disableGPU { + defaultGPU = false } else { - gpu = builder.GPUEnabled() + defaultGPU = builder.GPUEnabled() } - numGPU := 0 - if gpu { + numGPU := clicontext.Int("gpus") + if defaultGPU && numGPU == 0 { numGPU = 1 } From e0a7525730cba7812a8fee6cf4a55605b871fdae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 10:18:09 +0800 Subject: [PATCH 215/355] chore(deps): bump crate-ci/typos from 1.16.2 to 1.16.4 (#1731) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.2 to 1.16.4. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.2...v1.16.4) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 633a0ef23..97bbc6a69 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.2 + uses: crate-ci/typos@v1.16.4 with: config: ./typos.toml lint: From c7bdb3ef689e6a35f8cd9c097eb6dc726a2cb306 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 10:18:29 +0800 Subject: [PATCH 216/355] chore(deps): bump pypa/cibuildwheel from 2.14.1 to 2.15.0 (#1732) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.14.1 to 2.15.0. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.14.1...v2.15.0) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 974bd63e4..aa4e4903a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.14.1 + uses: pypa/cibuildwheel@v2.15.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 66d6d785c8cd810423981a83b8838e98d2c54978 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 14 Aug 2023 15:13:48 +0800 Subject: [PATCH 217/355] feat(v1): support copy from an image (#1737) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- envd/api/v1/io.py | 15 ++++++++++++--- examples/python-basic/build.envd | 2 +- pkg/lang/frontend/starlark/v1/io/io.go | 13 +++++-------- pkg/lang/ir/types.go | 1 + pkg/lang/ir/v1/interface.go | 3 ++- pkg/lang/ir/v1/system.go | 8 +++++++- 6 files changed, 28 insertions(+), 14 deletions(-) diff --git a/envd/api/v1/io.py b/envd/api/v1/io.py index d33744364..55c44d65c 100644 --- a/envd/api/v1/io.py +++ b/envd/api/v1/io.py @@ -30,12 +30,21 @@ from typing import Optional -def copy(host_path: str, envd_path: str): +def copy(source: str, target: str, image: Optional[str]): """Copy from host path to container path (build time) Args: - host_path (str): source path in the host machine - envd_path (str): destination path in the envd container + source (str): source path in the host machine or in the ``image`` + target (str): destination path in the envd container + image(Optional[str]): image name, if not specified, will use the host + + Examples: + ``` + # copy from host to container + io.copy(source='main.py', target='/home/envd/') + # copy from image to container + io.copy(source='/bin/micromamba', target='/usr/local/bin/micromamba', image='mambaorg/micromamba:1.0.0') + ``` """ diff --git a/examples/python-basic/build.envd b/examples/python-basic/build.envd index a006b104a..5b008a357 100644 --- a/examples/python-basic/build.envd +++ b/examples/python-basic/build.envd @@ -6,7 +6,7 @@ def build(): "via", ] ) - io.copy(host_path="./build.envd", envd_path="/") + io.copy("./build.envd", "/") runtime.command( commands={ "test": "ls /", diff --git a/pkg/lang/frontend/starlark/v1/io/io.go b/pkg/lang/frontend/starlark/v1/io/io.go index 2c1b7ac58..5cc50af75 100644 --- a/pkg/lang/frontend/starlark/v1/io/io.go +++ b/pkg/lang/frontend/starlark/v1/io/io.go @@ -36,19 +36,16 @@ var Module = &starlarkstruct.Module{ func ruleFuncCopy(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var source, destination starlark.String + var source, destination, image string if err := starlark.UnpackArgs(ruleCopy, args, kwargs, - "host_path?", &source, "envd_path?", &destination); err != nil { + "source", &source, "target", &destination, "image?", &image); err != nil { return nil, err } - sourceStr := source.GoString() - destinationStr := destination.GoString() - - logger.Debugf("rule `%s` is invoked, src=%s, dest=%s\n", - ruleCopy, sourceStr, destinationStr) - ir.Copy(sourceStr, destinationStr) + logger.Debugf("rule `%s` is invoked, src=%s, dest=%s, image=%s\n", + ruleCopy, source, destination, image) + ir.Copy(source, destination, image) return starlark.None, nil } diff --git a/pkg/lang/ir/types.go b/pkg/lang/ir/types.go index a92597cf8..f2a8f21a8 100644 --- a/pkg/lang/ir/types.go +++ b/pkg/lang/ir/types.go @@ -31,6 +31,7 @@ type RuntimeGraph struct { type CopyInfo struct { Source string Destination string + Image string } type MountInfo struct { diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index d69bf9ddb..c08bdf3b3 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -261,12 +261,13 @@ func CondaPackage(deps []string, channel []string, envFile string) error { return nil } -func Copy(src, dest string) { +func Copy(src, dest, image string) { g := DefaultGraph.(*generalGraph) g.Copy = append(g.Copy, ir.CopyInfo{ Source: src, Destination: dest, + Image: image, }) } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index b555a5da2..0f5a02f91 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -172,8 +172,14 @@ func (g generalGraph) compileCopy(root llb.State) llb.State { result := root // Compose the copy command. for _, c := range g.Copy { + var from llb.State + if c.Image == "" { + from = llb.Local(flag.FlagBuildContext) + } else { + from = llb.Image(c.Image) + } result = result.File(llb.Copy( - llb.Local(flag.FlagBuildContext), c.Source, c.Destination, + from, c.Source, c.Destination, &llb.CopyInfo{CreateDestPath: true}, llb.WithUIDGID(g.uid, g.gid))) } From 7441e3863e99282d06e3da2f7159caf651ea3217 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 17:02:40 +0800 Subject: [PATCH 218/355] chore(deps): bump github.com/syncthing/syncthing from 1.23.5 to 1.23.7 (#1734) Bumps [github.com/syncthing/syncthing](https://github.com/syncthing/syncthing) from 1.23.5 to 1.23.7. - [Release notes](https://github.com/syncthing/syncthing/releases) - [Commits](https://github.com/syncthing/syncthing/compare/v1.23.5...v1.23.7) --- updated-dependencies: - dependency-name: github.com/syncthing/syncthing dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 26 ++++++++++++------------ go.sum | 63 +++++++++++++++++++++++++++++----------------------------- 2 files changed, 44 insertions(+), 45 deletions(-) diff --git a/go.mod b/go.mod index 2f7023615..15eb91b9f 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.16.0 github.com/stretchr/testify v1.8.4 - github.com/syncthing/syncthing v1.23.5 + github.com/syncthing/syncthing v1.23.7 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f @@ -97,7 +97,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.5.9 // indirect - github.com/google/pprof v0.0.0-20230406165453-00490a63f317 // indirect + github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect github.com/google/s2a-go v0.1.3 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -111,7 +111,7 @@ require ( github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/imdario/mergo v0.3.15 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect @@ -119,7 +119,7 @@ require ( github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect github.com/klauspost/compress v1.16.3 // indirect - github.com/klauspost/cpuid/v2 v2.2.4 // indirect + github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.1 // indirect @@ -128,7 +128,7 @@ require ( github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.14 // indirect - github.com/minio/sha256-simd v1.0.0 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -150,8 +150,8 @@ require ( github.com/opencontainers/runc v1.1.5 // indirect github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect - github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 // indirect - github.com/pierrec/lz4/v4 v4.1.17 // indirect + github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect + github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.4 // indirect @@ -160,7 +160,7 @@ require ( github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect - github.com/shirou/gopsutil/v3 v3.23.3 // indirect + github.com/shirou/gopsutil/v3 v3.23.6 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -175,7 +175,7 @@ require ( github.com/vbatts/tar-split v0.11.3 // indirect github.com/xanzy/ssh-agent v0.3.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - github.com/yusufpapurcu/wmi v1.2.2 // indirect + github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect go.opentelemetry.io/otel v1.14.0 // indirect @@ -184,19 +184,19 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/exp v0.0.0-20230321023759-10a507213a29 // indirect - golang.org/x/mod v0.10.0 // indirect + golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 // indirect + golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sys v0.11.0 // indirect golang.org/x/text v0.11.0 // indirect - golang.org/x/tools v0.9.3 // indirect + golang.org/x/tools v0.11.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.55.0 // indirect - google.golang.org/protobuf v1.30.0 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 77428f716..ca5997cda 100644 --- a/go.sum +++ b/go.sum @@ -482,8 +482,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317 h1:hFhpt7CTmR3DX+b4R19ydQFtofxT0Sv3QsKNMVQYTMQ= -github.com/google/pprof v0.0.0-20230406165453-00490a63f317/go.mod h1:79YE0hCXdHag9sBkw2o+N/YnZtTkXi0UT9Nnixa5eYk= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= +github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= @@ -534,8 +534,8 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru/v2 v2.0.2 h1:Dwmkdr5Nc/oBiXgJS3CDHNhJtIHkuZ3DZF5twqnfBdU= -github.com/hashicorp/golang-lru/v2 v2.0.2/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/golang-lru/v2 v2.0.4 h1:7GHuZcgid37q8o5i3QI9KMT4nCWQQ3Kx3Ov6bb9MfK0= +github.com/hashicorp/golang-lru/v2 v2.0.4/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -567,9 +567,8 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= -github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.4 h1:acbojRNwl3o09bUq+yDCtZFc1aiwaAAxtcn8YkZXnvk= -github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= +github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 h1:BcxbplxjtczA1a6d3wYoa7a0WL3rq9DKBMGHeKyjEF0= github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -608,8 +607,8 @@ github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRC github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= -github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75/go.mod h1:pBbZyGwC5i16IBkjVKoy/sznA8jPD/K9iedwe1ESE6w= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= @@ -707,10 +706,10 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08 h1:hDSdbBuw3Lefr6R18ax0tZ2BJeNB3NehB3trOwYBsdU= -github.com/petermattis/goid v0.0.0-20230317030725-371a4b8eda08/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4/v4 v4.1.17 h1:kV4Ip+/hUBC+8T6+2EgburRtkE9ef4nbY3f4dFhGjMc= -github.com/pierrec/lz4/v4 v4.1.17/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 h1:W04oB3d0J01W5jgYRGKsV8LCM6g9EkCvPkZcmFuy0OE= +github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= +github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= @@ -728,7 +727,7 @@ github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:Om github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.9.0 h1:wzCHvIvM5SxWqYvwgVL7yJY8Lz3PKn49KQtpgMYJfhI= +github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= @@ -754,10 +753,10 @@ github.com/segmentio/backo-go v1.0.0/go.mod h1:kJ9mm9YmoWSkk+oQ+5Cj8DEoRCX2JT6As github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= -github.com/shirou/gopsutil/v3 v3.23.3 h1:Syt5vVZXUDXPEXpIBt5ziWsJ4LdSAAxF4l/xZeQgSEE= -github.com/shirou/gopsutil/v3 v3.23.3/go.mod h1:lSBNN6t3+D6W5e5nXTxc8KIMMVxAcS+6IJlffjRRlMU= -github.com/shoenig/go-m1cpu v0.1.4/go.mod h1:Wwvst4LR89UxjeFtLRMrpgRiyY4xPsejnVZym39dbAQ= -github.com/shoenig/test v0.6.3/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/shirou/gopsutil/v3 v3.23.6 h1:5y46WPI9QBKBbK7EEccUPNXpJpNrvPuTD0O2zHEHT08= +github.com/shirou/gopsutil/v3 v3.23.6/go.mod h1:j7QX50DrXYggrpN30W0Mo+I4/8U2UUIQrnrhqUeWrAU= +github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= +github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -797,7 +796,6 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= @@ -805,8 +803,8 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= -github.com/syncthing/syncthing v1.23.5 h1:ARmzVJrnqc64ls//aOy2giNJLWQc+xCgoAaHo1Gqz6s= -github.com/syncthing/syncthing v1.23.5/go.mod h1:am4ZwC/vahEQ1dLflqB0urA0FY5/ms0bwtqvxh5GIy0= +github.com/syncthing/syncthing v1.23.7 h1:PaHKBN4C+qaam9vtMV0qjwMBywAuyVtxmQ7vbBrV0Rw= +github.com/syncthing/syncthing v1.23.7/go.mod h1:9f9139UzZ/llx16dP3x1XtID87IhOorEbHHrTDjNhQs= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= @@ -845,8 +843,8 @@ github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= -github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= +github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -902,8 +900,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29 h1:ooxPy7fPvB4kwsA2h+iBNHkAbp/4JxTSwCmvdjEYmug= -golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 h1:FqrVOBQxQ8r/UwwXibI0KMolVhvFiGobSfdE33deHJM= +golang.org/x/exp v0.0.0-20230711023510-fffb14384f22/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -930,8 +928,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1119,7 +1117,6 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1129,7 +1126,9 @@ golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1216,8 +1215,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= +golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1446,8 +1445,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From be783264fdd79ad7262cea0485b7d449ca514f80 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 14 Aug 2023 17:42:45 +0800 Subject: [PATCH 219/355] feat(v1): copy the requirements content if possible (#1738) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/builder/build.go | 4 +--- pkg/lang/ir/graph.go | 2 +- pkg/lang/ir/v0/compile.go | 5 ++-- pkg/lang/ir/v0/types.go | 2 ++ pkg/lang/ir/v1/compile.go | 5 ++-- pkg/lang/ir/v1/python.go | 26 +++++++++++++++------ pkg/lang/ir/v1/types.go | 2 ++ pkg/lang/ir/v1/util.go | 48 +++++++++++++++++++++++++++++++++++++++ 8 files changed, 79 insertions(+), 15 deletions(-) diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 9594cc8b2..41241bb63 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -18,7 +18,6 @@ import ( "context" "io" "os" - "path/filepath" "strings" "github.com/cockroachdb/errors" @@ -160,12 +159,11 @@ func (b generalBuilder) Interpret() error { } func (b generalBuilder) Compile(ctx context.Context) (*llb.Definition, error) { - envName := filepath.Base(b.BuildContextDir) platform, err := parsePlatform(b.Platform) if err != nil { return nil, err } - def, err := b.graph.Compile(ctx, envName, b.PubKeyPath, platform, b.Options.ProgressMode) + def, err := b.graph.Compile(ctx, b.BuildContextDir, b.PubKeyPath, platform, b.Options.ProgressMode) if err != nil { return nil, errors.Wrap(err, "failed to compile build.envd") } diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 958f8451b..39fdd5d76 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -24,7 +24,7 @@ import ( ) type Graph interface { - Compile(ctx context.Context, envName string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) + Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) graphDebugger graphVisitor diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index 706552b4f..6d4929b44 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -112,13 +112,14 @@ func (g generalGraph) GetPlatform() *ocispecs.Platform { return g.Platform } -func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { +func (g *generalGraph) Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { return nil, errors.Wrap(err, "failed to create compileui") } g.Writer = w - g.EnvironmentName = envName + g.EnvironmentPath = envPath + g.EnvironmentName = filepath.Base(envPath) g.PublicKeyPath = pub g.Platform = platform diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go index 96f0ac545..6be8d0c9f 100644 --- a/pkg/lang/ir/v0/types.go +++ b/pkg/lang/ir/v0/types.go @@ -77,6 +77,8 @@ type generalGraph struct { // It is the BaseDir(BuildContextDir) // e.g. mnist, streamlit-mnist EnvironmentName string + // EnvironmentPath is the full path of this environment. + EnvironmentPath string ir.RuntimeGraph diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index fcadd94b8..63605473b 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -109,7 +109,7 @@ func (g generalGraph) GetPlatform() *ocispecs.Platform { return g.Platform } -func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { +func (g *generalGraph) Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { return nil, errors.Wrap(err, "failed to create compileui") @@ -120,7 +120,8 @@ func (g *generalGraph) Compile(ctx context.Context, envName string, pub string, } g.Writer = w - g.EnvironmentName = envName + g.EnvironmentPath = envPath + g.EnvironmentName = filepath.Base(envPath) g.PublicKeyPath = pub g.Platform = platform if c.Builder == types.BuilderTypeMoby { diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 4722537df..9a4f6bb14 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -132,13 +132,25 @@ func (g generalGraph) compilePyPIPackages(root llb.State) llb.State { logrus.WithField("file", *g.RequirementsFile). Debug("Configure pip install requirements statements") root = root.Dir(g.getWorkingDir()) - run := root. - Run(llb.Shlexf("python -m pip install -r %s", *g.RequirementsFile), - llb.WithCustomNamef("pip install -r %s", *g.RequirementsFile)) - run.AddMount(cacheDir, cache, - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache/pip")) - run.AddMount(g.getWorkingDir(), llb.Local(flag.FlagBuildContext)) - root = run.Root() + dependencies, safeToCopy := g.IsRequirementsFileSafeToCopyContent() + logrus.WithField("safeToCopy", safeToCopy).WithField("dependencies", dependencies). + Debug("Is requirements file safe to copy") + if safeToCopy { + // avoid mounting host directory to make it cache friendly + root = root.Run(llb.Shlexf( + "python -m pip install %s", + strings.Join(dependencies, " ")), + llb.WithCustomNamef("[internal] pip install from %s with %s", *g.RequirementsFile, strings.Join(dependencies, " ")), + ).Root() + } else { + run := root. + Run(llb.Shlexf("python -m pip install -r %s", *g.RequirementsFile), + llb.WithCustomNamef("[internal] pip install -r %s", *g.RequirementsFile)) + run.AddMount(cacheDir, cache, + llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache/pip")) + run.AddMount(g.getWorkingDir(), llb.Local(flag.FlagBuildContext)) + root = run.Root() + } } if len(g.PythonWheels) > 0 { diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 7abb1b2ba..7900d58f8 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -78,6 +78,8 @@ type generalGraph struct { // It is the BaseDir(BuildContextDir) // e.g. mnist, streamlit-mnist EnvironmentName string + // EnvironmentPath is the full path of this environment. + EnvironmentPath string // (v1) disable `merge` op for `moby` builder // check https://github.com/tensorchord/envd/issues/1693 diff --git a/pkg/lang/ir/v1/util.go b/pkg/lang/ir/v1/util.go index 77cb953be..660d7198a 100644 --- a/pkg/lang/ir/v1/util.go +++ b/pkg/lang/ir/v1/util.go @@ -15,13 +15,16 @@ package v1 import ( + "bufio" "bytes" "crypto/md5" "encoding/gob" "encoding/hex" "encoding/json" "fmt" + "os" "os/user" + "path/filepath" "regexp" "runtime" "strconv" @@ -175,3 +178,48 @@ func (g generalGraph) GeneralGraphFromLabel(label []byte) (ir.Graph, error) { } return &newg, nil } + +// IsRequirementsFileSafeToCopyContent returns true and the dependencies in this file if the +// requirements file is safe to copy. Otherwise, it returns false and empty dependencies. +// check https://github.com/tensorchord/envd/issues/1629 +func (g generalGraph) IsRequirementsFileSafeToCopyContent() (dependencies []string, safe bool) { + if g.RequirementsFile == nil { + return + } + filePath := filepath.Join(g.EnvironmentPath, *g.RequirementsFile) + file, err := os.Open(filePath) + if err != nil { + logrus.WithError(err).Debugf("failed to open requirements file: %s", filePath) + return + } + defer file.Close() + + forbidden := []string{ + "-e", + "-r", + "-c", + "--find-links", + } + + scanner := bufio.NewScanner(file) + for scanner.Scan() { + line := scanner.Text() + if strings.HasPrefix(line, "#") { + continue + } + for _, f := range forbidden { + if strings.Contains(line, f) { + logrus.Debugf("requirements file contains %s, which is not safe to copy", f) + return []string{}, false + } + } + exist, err := fileutil.FileExists(line) + // has a local file to install + if err == nil && exist { + logrus.Debugf("requirements file contains local file %s, which is not safe to copy", line) + return []string{}, false + } + dependencies = append(dependencies, line) + } + return dependencies, true +} From 73842809565ac5207aa1badb03d6ad9f17583ab1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 14 Aug 2023 18:05:18 +0800 Subject: [PATCH 220/355] docs: updated CHANGELOG.md (#1739) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7db0fe8b..d29bce042 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## v0.3.38 (2023-08-14) + + * [be78326](https://github.com/tensorchord/envd/commit/be783264fdd79ad7262cea0485b7d449ca514f80) feat(v1): copy the requirements content if possible (#1738) + * [66d6d78](https://github.com/tensorchord/envd/commit/66d6d785c8cd810423981a83b8838e98d2c54978) feat(v1): support copy from an image (#1737) + * [7dfd379](https://github.com/tensorchord/envd/commit/7dfd3790b36afde7038b456808bbfd7b187365e2) feat: envd up with `--gpus` (#1730) + +### Contributors + + * Keming + ## v0.3.37 (2023-08-04) * [f51990e](https://github.com/tensorchord/envd/commit/f51990e82aaae662d923f9f6a1e6d8bd53c6f7bd) feat: add envd app exit handler (#1722) From 0c63598f0d932e21df8d236c93d3b4f51d65817a Mon Sep 17 00:00:00 2001 From: heyjude <33415192+lxb1226@users.noreply.github.com> Date: Tue, 15 Aug 2023 09:56:41 +0800 Subject: [PATCH 221/355] fix: add ldflags for debug-local (#1741) --- Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile b/Makefile index 04e854a95..b66f39cd2 100644 --- a/Makefile +++ b/Makefile @@ -164,6 +164,7 @@ debug-local: @for target in $(TARGETS); do \ CGO_ENABLED=$(CGO_ENABLED) go build \ -v -o $(DEBUG_DIR)/$${target} \ + -ldflags="-X $(ROOT)/pkg/version.gitTag=$(GIT_LATEST_TAG)" \ -gcflags='all=-N -l' \ $(CMD_DIR)/$${target}; \ done From a4fe97a2cd00ab77484019c759c48b50f398324e Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Tue, 15 Aug 2023 10:21:53 +0800 Subject: [PATCH 222/355] docs: add lxb1226 as a contributor for code (#1742) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 12 +++++++++++- README.md | 5 +++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 9bb44269a..911b70ada 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -610,8 +610,18 @@ "contributions": [ "code" ] + }, + { + "login": "lxb1226", + "name": "heyjude", + "avatar_url": "https://avatars.githubusercontent.com/u/33415192?v=4", + "profile": "https://lxb1226.github.io/", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, - "skipCi": true + "skipCi": true, + "commitType": "docs" } diff --git a/README.md b/README.md index a8f71e33b..330b29f0a 100644 --- a/README.md +++ b/README.md @@ -351,19 +351,20 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d <td align="center" valign="top" width="14.28%"><a href="https://t.me/littlepoint"><img src="https://avatars.githubusercontent.com/u/7611700?v=4?s=70" width="70px;" alt="Zhizhen He"/><br /><sub><b>Zhizhen He</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=hezhizhen" title="Code">💻</a> <a href="https://github.com/tensorchord/envd/commits?author=hezhizhen" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/cutecutecat"><img src="https://avatars.githubusercontent.com/u/19801166?v=4?s=70" width="70px;" alt="cutecutecat"/><br /><sub><b>cutecutecat</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=cutecutecat" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/dqhl76"><img src="https://avatars.githubusercontent.com/u/69136320?v=4?s=70" width="70px;" alt="dqhl76"/><br /><sub><b>dqhl76</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=dqhl76" title="Documentation">📖</a> <a href="https://github.com/tensorchord/envd/commits?author=dqhl76" title="Code">💻</a></td> + <td align="center" valign="top" width="14.28%"><a href="https://lxb1226.github.io/"><img src="https://avatars.githubusercontent.com/u/33415192?v=4?s=70" width="70px;" alt="heyjude"/><br /><sub><b>heyjude</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=lxb1226" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/jimoosciuc"><img src="https://avatars.githubusercontent.com/u/33337387?v=4?s=70" width="70px;" alt="jimoosciuc"/><br /><sub><b>jimoosciuc</b></sub></a><br /><a href="#userTesting-jimoosciuc" title="User Testing">📓</a></td> - <td align="center" valign="top" width="14.28%"><a href="https://kenwoodjw.github.io"><img src="https://avatars.githubusercontent.com/u/10386710?v=4?s=70" width="70px;" alt="kenwoodjw"/><br /><sub><b>kenwoodjw</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=kenwoodjw" title="Code">💻</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="https://kenwoodjw.github.io"><img src="https://avatars.githubusercontent.com/u/10386710?v=4?s=70" width="70px;" alt="kenwoodjw"/><br /><sub><b>kenwoodjw</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=kenwoodjw" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://www.hwdef.org"><img src="https://avatars.githubusercontent.com/u/13084946?v=4?s=70" width="70px;" alt="li mengyang"/><br /><sub><b>li mengyang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=hwdef" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/aseaday"><img src="https://avatars.githubusercontent.com/u/3927355?v=4?s=70" width="70px;" alt="nullday"/><br /><sub><b>nullday</b></sub></a><br /><a href="#ideas-aseaday" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/tensorchord/envd/commits?author=aseaday" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/rrain7"><img src="https://avatars.githubusercontent.com/u/49144127?v=4?s=70" width="70px;" alt="rrain7"/><br /><sub><b>rrain7</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=rrain7" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://tisonkun.org/"><img src="https://avatars.githubusercontent.com/u/18818196?v=4?s=70" width="70px;" alt="tison"/><br /><sub><b>tison</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=tisonkun" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://fatelei.github.io"><img src="https://avatars.githubusercontent.com/u/961094?v=4?s=70" width="70px;" alt="wangxiaolei"/><br /><sub><b>wangxiaolei</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=fatelei" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/sea-wyq"><img src="https://avatars.githubusercontent.com/u/22475606?v=4?s=70" width="70px;" alt="wyq"/><br /><sub><b>wyq</b></sub></a><br /><a href="https://github.com/tensorchord/envd/issues?q=author%3Asea-wyq" title="Bug reports">🐛</a> <a href="#design-sea-wyq" title="Design">🎨</a> <a href="https://github.com/tensorchord/envd/commits?author=sea-wyq" title="Code">💻</a></td> - <td align="center" valign="top" width="14.28%"><a href="https://oubotong.github.io/johan"><img src="https://avatars.githubusercontent.com/u/26356127?v=4?s=70" width="70px;" alt="x0oo0x"/><br /><sub><b>x0oo0x</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=oubotong" title="Code">💻</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="https://oubotong.github.io/johan"><img src="https://avatars.githubusercontent.com/u/26356127?v=4?s=70" width="70px;" alt="x0oo0x"/><br /><sub><b>x0oo0x</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=oubotong" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xiangtianyu"><img src="https://avatars.githubusercontent.com/u/10825900?v=4?s=70" width="70px;" alt="xiangtianyu"/><br /><sub><b>xiangtianyu</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xiangtianyu" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xieydd"><img src="https://avatars.githubusercontent.com/u/20329697?v=4?s=70" width="70px;" alt="xieydd"/><br /><sub><b>xieydd</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xieydd" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xing0821"><img src="https://avatars.githubusercontent.com/u/54933318?v=4?s=70" width="70px;" alt="xing0821"/><br /><sub><b>xing0821</b></sub></a><br /><a href="#ideas-xing0821" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-xing0821" title="User Testing">📓</a> <a href="https://github.com/tensorchord/envd/commits?author=xing0821" title="Code">💻</a></td> From 3bcce055b0fd07b442b2d39f4fa9c0e4d2300e2e Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 15 Aug 2023 16:21:28 +0800 Subject: [PATCH 223/355] feat: inherit the workdir from base image for non-dev env (#1743) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/builder/build.go | 3 ++- pkg/builder/util.go | 4 ++-- pkg/lang/ir/graph.go | 1 + pkg/lang/ir/v0/compile.go | 5 +++++ pkg/lang/ir/v0/system.go | 2 ++ pkg/lang/ir/v0/types.go | 3 +++ pkg/lang/ir/v1/compile.go | 5 +++++ pkg/lang/ir/v1/python.go | 3 +-- pkg/lang/ir/v1/system.go | 18 ++++++++++++++++++ pkg/lang/ir/v1/types.go | 3 +++ 10 files changed, 42 insertions(+), 5 deletions(-) diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 41241bb63..bdb534471 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -198,8 +198,9 @@ func (b generalBuilder) imageConfig(ctx context.Context) (string, error) { env := b.graph.GetEnviron() user := b.graph.GetUser() platform := b.graph.GetPlatform() + workingDir := b.graph.GetWorkingDir() - data, err := ImageConfigStr(labels, ports, ep, env, user, platform) + data, err := ImageConfigStr(labels, ports, ep, env, user, workingDir, platform) if err != nil { return "", errors.Wrap(err, "failed to get image config") } diff --git a/pkg/builder/util.go b/pkg/builder/util.go index 9b35368f1..7ac3e70b2 100644 --- a/pkg/builder/util.go +++ b/pkg/builder/util.go @@ -35,12 +35,12 @@ const ( ) func ImageConfigStr(labels map[string]string, ports map[string]struct{}, - entrypoint []string, env []string, user string, platform *ocispecs.Platform) (string, error) { + entrypoint []string, env []string, user, workingDir string, platform *ocispecs.Platform) (string, error) { img := ocispecs.Image{ Config: ocispecs.ImageConfig{ Labels: labels, User: user, - WorkingDir: "/", + WorkingDir: workingDir, Env: env, ExposedPorts: ports, Entrypoint: entrypoint, diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 39fdd5d76..9a359a5df 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -58,4 +58,5 @@ type graphVisitor interface { GetRuntimeCommands() map[string]string GetUser() string GetPlatform() *ocispecs.Platform + GetWorkingDir() string } diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index 6d4929b44..c50ccf184 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -67,6 +67,7 @@ func NewGraph() ir.Graph { CondaConfig: conda, RuntimeGraph: runtimeGraph, Platform: &ocispecs.Platform{}, + WorkingDir: "/", } } @@ -112,6 +113,10 @@ func (g generalGraph) GetPlatform() *ocispecs.Platform { return g.Platform } +func (g generalGraph) GetWorkingDir() string { + return g.WorkingDir +} + func (g *generalGraph) Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 8c9491cdb..7727f09ab 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -224,6 +224,8 @@ func (g *generalGraph) compileBase() (llb.State, error) { base = g.compileCUDAPackages("nvidia/cuda") } + g.WorkingDir = g.getWorkingDir() + // Install conda first. condaStage := g.installConda(base) supervisor := g.installHorust(condaStage) diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go index 6be8d0c9f..95b097238 100644 --- a/pkg/lang/ir/v0/types.go +++ b/pkg/lang/ir/v0/types.go @@ -79,6 +79,9 @@ type generalGraph struct { EnvironmentName string // EnvironmentPath is the full path of this environment. EnvironmentPath string + // WorkingDir is the working directory of this environment. + // This only affect the `WorkingDir` in the image config. + WorkingDir string ir.RuntimeGraph diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 63605473b..37a8326b8 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -60,6 +60,7 @@ func NewGraph() ir.Graph { Shell: shellBASH, RuntimeGraph: runtimeGraph, Platform: &ocispecs.Platform{}, + WorkingDir: "/", } } @@ -109,6 +110,10 @@ func (g generalGraph) GetPlatform() *ocispecs.Platform { return g.Platform } +func (g generalGraph) GetWorkingDir() string { + return g.WorkingDir +} + func (g *generalGraph) Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { w, err := compileui.New(ctx, os.Stdout, progressMode) if err != nil { diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 9a4f6bb14..8cf6bf4a6 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -131,7 +131,6 @@ func (g generalGraph) compilePyPIPackages(root llb.State) llb.State { if g.RequirementsFile != nil { logrus.WithField("file", *g.RequirementsFile). Debug("Configure pip install requirements statements") - root = root.Dir(g.getWorkingDir()) dependencies, safeToCopy := g.IsRequirementsFileSafeToCopyContent() logrus.WithField("safeToCopy", safeToCopy).WithField("dependencies", dependencies). Debug("Is requirements file safe to copy") @@ -143,7 +142,7 @@ func (g generalGraph) compilePyPIPackages(root llb.State) llb.State { llb.WithCustomNamef("[internal] pip install from %s with %s", *g.RequirementsFile, strings.Join(dependencies, " ")), ).Root() } else { - run := root. + run := root.Dir(g.getWorkingDir()). Run(llb.Shlexf("python -m pip install -r %s", *g.RequirementsFile), llb.WithCustomNamef("[internal] pip install -r %s", *g.RequirementsFile)) run.AddMount(cacheDir, cache, diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 0f5a02f91..ba3edef27 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -252,6 +252,22 @@ func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { langs := []llb.State{} lang := root var err error + + if g.DisableMergeOp { + for _, language := range g.Languages { + switch language.Name { + case "python": + root, err = g.installPython(root) + case "r": + rSrc := g.compileRLang(root) + root = g.installRLang(rSrc) + case "julia": + root = g.installJulia(root) + } + } + return root, err + } + for _, language := range g.Languages { switch language.Name { case "python": @@ -396,9 +412,11 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { g.Entrypoint = config.Entrypoint } g.User = config.User + g.WorkingDir = config.WorkingDir } else { // for dev mode, we will create an `envd` user g.User = "" + g.WorkingDir = g.getWorkingDir() } return base, nil } diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 7900d58f8..5bde6fbba 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -80,6 +80,9 @@ type generalGraph struct { EnvironmentName string // EnvironmentPath is the full path of this environment. EnvironmentPath string + // WorkingDir is the working directory of this environment. + // This only affect the `WorkingDir` in the image config. + WorkingDir string // (v1) disable `merge` op for `moby` builder // check https://github.com/tensorchord/envd/issues/1693 From 3b5fae2de801b6e8fee98d1f2e743dce63a20085 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 18 Aug 2023 08:02:05 +0800 Subject: [PATCH 224/355] docs: updated CHANGELOG.md (#1744) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d29bce042..42409a39d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## v0.3.39 (2023-08-15) + + * [3bcce05](https://github.com/tensorchord/envd/commit/3bcce055b0fd07b442b2d39f4fa9c0e4d2300e2e) feat: inherit the workdir from base image for non-dev env (#1743) + * [0c63598](https://github.com/tensorchord/envd/commit/0c63598f0d932e21df8d236c93d3b4f51d65817a) fix: add ldflags for debug-local (#1741) + +### Contributors + + * Keming + * heyjude + ## v0.3.38 (2023-08-14) * [be78326](https://github.com/tensorchord/envd/commit/be783264fdd79ad7262cea0485b7d449ca514f80) feat(v1): copy the requirements content if possible (#1738) From a0d1efbfb2365116e24a8e1bd2659adf30e8b757 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 22 Aug 2023 11:07:21 +0800 Subject: [PATCH 225/355] chore(deps): bump crate-ci/typos from 1.16.4 to 1.16.6 (#1745) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.4 to 1.16.6. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.4...v1.16.6) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 97bbc6a69..f09c0e92f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.4 + uses: crate-ci/typos@v1.16.6 with: config: ./typos.toml lint: From 1aa4a8ff8380d19ac723374cf280259d7a0adc2b Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 23 Aug 2023 17:36:22 +0800 Subject: [PATCH 226/355] docs: highlight the example code (#1748) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- envd/api/v0/__init__.py | 6 +++--- envd/api/v0/config.py | 8 ++++---- envd/api/v0/runtime.py | 6 +++--- envd/api/v1/__init__.py | 8 ++++---- envd/api/v1/config.py | 8 ++++---- envd/api/v1/install.py | 10 ++++++++-- envd/api/v1/io.py | 2 +- envd/api/v1/runtime.py | 6 +++--- 8 files changed, 30 insertions(+), 24 deletions(-) diff --git a/envd/api/v0/__init__.py b/envd/api/v0/__init__.py index 72fbb639d..0f53c3408 100644 --- a/envd/api/v0/__init__.py +++ b/envd/api/v0/__init__.py @@ -51,7 +51,7 @@ def run(commands: List[str], mount_host: bool = False): Enabling this will disable the build cache for this operation. Example: - ``` + ```python run(commands=["conda install -y -c conda-forge exa"]) ``` """ @@ -70,7 +70,7 @@ def git_config( editor (optional, str): Editor for git operations Example usage: - ``` + ```python git_config(name="My Name", email="my@email.com", editor="vim") ``` """ @@ -86,7 +86,7 @@ def include(git: str): git (str): git URL Example usage: - ``` + ```python envd = include("https://github.com/tensorchord/envdlib") def build(): diff --git a/envd/api/v0/config.py b/envd/api/v0/config.py index aaa9fc763..3a2903d20 100644 --- a/envd/api/v0/config.py +++ b/envd/api/v0/config.py @@ -28,7 +28,7 @@ def apt_source(source: Optional[str]): """Configure apt sources Example usage: - ``` + ```python apt_source(source=''' deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted @@ -71,7 +71,7 @@ def conda_channel(channel: str): """Configure conda channel mirror Example usage: - ``` + ```python config.conda_channel(channel=''' channels: - defaults @@ -94,7 +94,7 @@ def entrypoint(args: List[str]): """Configure entrypoint for custom base image Example usage: - ``` + ```python config.entrypoint(["date", "-u"]) ``` @@ -107,7 +107,7 @@ def gpu(count: int): """Configure the number of GPUs required Example usage: - ``` + ```python config.gpu(count=2) ``` diff --git a/envd/api/v0/runtime.py b/envd/api/v0/runtime.py index 1df66559a..ed08191b4 100644 --- a/envd/api/v0/runtime.py +++ b/envd/api/v0/runtime.py @@ -31,7 +31,7 @@ def command(commands: Dict[str, str]): commands (Dict[str, str]): map name to command, similar to Makefile Example usage: - ``` + ```python runtime.command(commands={ "train": "python train.py --epoch 20 --notify me@tensorchord.ai", "run": "python server.py --batch 1 --host 0.0.0.0 --port 8000", @@ -73,7 +73,7 @@ def daemon(commands: List[List[str]]): commands (List[List[str]]): run multiple commands in the background Example usage: - ``` + ```python runtime.daemon(commands=[ ["jupyter-lab", "--port", "8080"], ["python3", "serving.py", ">>serving.log", "2>&1"], @@ -90,7 +90,7 @@ def environ(env: Dict[str, str], extra_path: List[str]): extra_path (List[str]): additional PATH Example usage: - ``` + ```python runtime.environ(env={"ENVD_MODE": "DEV"}, extra_path=["/usr/bin/go/bin"]) ``` """ diff --git a/envd/api/v1/__init__.py b/envd/api/v1/__init__.py index 302cb0e77..949e1319e 100644 --- a/envd/api/v1/__init__.py +++ b/envd/api/v1/__init__.py @@ -60,7 +60,7 @@ def run(commands: List[str], mount_host: bool = False): Enabling this will disable the build cache for this operation. Example: - ``` + ```python run(commands=["conda install -y -c conda-forge exa"]) ``` """ @@ -71,7 +71,7 @@ def git_config( email: Optional[str] = None, editor: Optional[str] = None, ): - """Setup git config + """Setup git config. Args: name (str): User name @@ -79,7 +79,7 @@ def git_config( editor (str): Editor for git operations Example usage: - ``` + ```python git_config(name="My Name", email="my@email.com", editor="vim") ``` """ @@ -95,7 +95,7 @@ def include(git: str): git (str): git URL Example usage: - ``` + ```python envd = include("https://github.com/tensorchord/envdlib") def build(): diff --git a/envd/api/v1/config.py b/envd/api/v1/config.py index e088c91dc..6f887970f 100644 --- a/envd/api/v1/config.py +++ b/envd/api/v1/config.py @@ -34,7 +34,7 @@ def apt_source(source: Optional[str]): """Configure apt sources Example usage: - ``` + ```python apt_source(source=''' deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted @@ -77,7 +77,7 @@ def conda_channel(channel: str): """Configure conda channel mirror Example usage: - ``` + ```python config.conda_channel(channel=''' channels: - defaults @@ -100,7 +100,7 @@ def entrypoint(args: List[str]): """Configure entrypoint for custom base image Example usage: - ``` + ```python config.entrypoint(["date", "-u"]) ``` @@ -113,7 +113,7 @@ def gpu(count: int): """Configure the number of GPUs required Example usage: - ``` + ```python config.gpu(count=2) ``` diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index 4001f031c..b1790474f 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -116,10 +116,16 @@ def vscode_extensions(name: List[str]): def cuda(version: str, cudnn: Optional[str] = "8"): """Replace the base image with a `nvidia/cuda` image. - If you want to install CUDA on your custom base image, you can use - `install.apt_packages` or `run` to install the CUDA toolkit. + This will replace the default base image to an `nvidia/cuda` image. You can + also use a CUDA base image directly like + `base(image="nvidia/cuda:12.2.0-devel-ubuntu20.04", dev=True)`. Args: version (str): CUDA version, such as '11.6.2' cudnn (optional, str): CUDNN version, such as '8' + + Example usage: + ```python + install.cuda(version="11.6.2", cudnn="8") + ``` """ diff --git a/envd/api/v1/io.py b/envd/api/v1/io.py index 55c44d65c..a9ddb4085 100644 --- a/envd/api/v1/io.py +++ b/envd/api/v1/io.py @@ -39,7 +39,7 @@ def copy(source: str, target: str, image: Optional[str]): image(Optional[str]): image name, if not specified, will use the host Examples: - ``` + ```python # copy from host to container io.copy(source='main.py', target='/home/envd/') # copy from image to container diff --git a/envd/api/v1/runtime.py b/envd/api/v1/runtime.py index 1d96a439a..bfed56f47 100644 --- a/envd/api/v1/runtime.py +++ b/envd/api/v1/runtime.py @@ -37,7 +37,7 @@ def command(commands: Dict[str, str]): commands (Dict[str, str]): map name to command, similar to Makefile Example usage: - ``` + ```python runtime.command(commands={ "train": "python train.py --epoch 20 --notify me@tensorchord.ai", "run": "python server.py --batch 1 --host 0.0.0.0 --port 8000", @@ -79,7 +79,7 @@ def daemon(commands: List[List[str]]): commands (List[List[str]]): run multiple commands in the background Example usage: - ``` + ```python runtime.daemon(commands=[ ["jupyter-lab", "--port", "8080"], ["python3", "serving.py", ">>serving.log", "2>&1"], @@ -96,7 +96,7 @@ def environ(env: Dict[str, str], extra_path: List[str]): extra_path (List[str]): additional PATH Example usage: - ``` + ```python runtime.environ(env={"ENVD_MODE": "DEV"}, extra_path=["/usr/bin/go/bin"]) ``` """ From a6613c7c340ee03839a97ba006afaf6653907013 Mon Sep 17 00:00:00 2001 From: heyjude <33415192+lxb1226@users.noreply.github.com> Date: Thu, 24 Aug 2023 22:12:15 +0800 Subject: [PATCH 227/355] feat: add shm size support (#1746) add shm size support Signed-off-by: lxb1226 <1944303766@qq.com> --- envd/api/v0/config.py | 13 ++++++++++++ envd/api/v1/config.py | 13 ++++++++++++ pkg/app/up.go | 8 +++++++- pkg/builder/build.go | 4 ++++ pkg/builder/builder.go | 1 + .../frontend/starlark/v0/config/config.go | 19 ++++++++++++++++++ pkg/lang/frontend/starlark/v0/config/const.go | 1 + .../frontend/starlark/v1/config/config.go | 20 +++++++++++++++++++ pkg/lang/frontend/starlark/v1/config/const.go | 1 + pkg/lang/ir/graph.go | 1 + pkg/lang/ir/v0/compile.go | 5 +++++ pkg/lang/ir/v0/interface.go | 6 ++++++ pkg/lang/ir/v0/types.go | 1 + pkg/lang/ir/v1/compile.go | 5 +++++ pkg/lang/ir/v1/interface.go | 6 ++++++ pkg/lang/ir/v1/types.go | 1 + 16 files changed, 104 insertions(+), 1 deletion(-) diff --git a/envd/api/v0/config.py b/envd/api/v0/config.py index 3a2903d20..dda6bfa31 100644 --- a/envd/api/v0/config.py +++ b/envd/api/v0/config.py @@ -116,6 +116,19 @@ def gpu(count: int): """ +def shm_size(size: int): + """Configure the shared memory size (megabyte) of docker containers + + Example usage: + ```python + config.shm_size(size=1024) + ``` + + Args: + size (int): the shared memory size (megabyte) of docker containers + """ + + def cran_mirror(url: str): """Configure the mirror URL, default is https://cran.rstudio.com diff --git a/envd/api/v1/config.py b/envd/api/v1/config.py index 6f887970f..2ab27b330 100644 --- a/envd/api/v1/config.py +++ b/envd/api/v1/config.py @@ -122,6 +122,19 @@ def gpu(count: int): """ +def shm_size(size: int): + """Configure the shared memory size (megabyte) of docker containers + + Example usage: + ```python + config.shm_size(size=1024) + ``` + + Args: + size (int): the shared memory size (megabyte) of docker containers + """ + + def cran_mirror(url: str): """Configure the mirror URL, default is https://cran.rstudio.com diff --git a/pkg/app/up.go b/pkg/app/up.go index 7015bb745..d1d5649a7 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -216,6 +216,12 @@ func up(clicontext *cli.Context) error { numGPU = 1 } + shmSize := builder.ShmSize() + isSetShmSize := clicontext.IsSet("shm-size") + if shmSize == 0 || isSetShmSize { + shmSize = clicontext.Int("shm-size") + } + opt := envd.Options{ Context: c, } @@ -238,7 +244,7 @@ func up(clicontext *cli.Context) error { Forced: clicontext.Bool("force"), Timeout: clicontext.Duration("timeout"), SshdHost: clicontext.String("host"), - ShmSize: clicontext.Int("shm-size"), + ShmSize: shmSize, NumCPU: clicontext.String("cpus"), NumMem: clicontext.String("memory"), CPUSet: clicontext.String("cpu-set"), diff --git a/pkg/builder/build.go b/pkg/builder/build.go index bdb534471..8c05ff7f1 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -121,6 +121,10 @@ func (b generalBuilder) NumGPUs() int { return b.graph.GetNumGPUs() } +func (b generalBuilder) ShmSize() int { + return b.graph.GetShmSize() +} + func (b generalBuilder) Build(ctx context.Context, force bool) error { if !force && !b.checkIfNeedBuild(ctx) { return nil diff --git a/pkg/builder/builder.go b/pkg/builder/builder.go index 01a29d492..832ac21be 100644 --- a/pkg/builder/builder.go +++ b/pkg/builder/builder.go @@ -29,5 +29,6 @@ type Builder interface { Compile(ctx context.Context) (*llb.Definition, error) GPUEnabled() bool NumGPUs() int + ShmSize() int GetGraph() ir.Graph } diff --git a/pkg/lang/frontend/starlark/v0/config/config.go b/pkg/lang/frontend/starlark/v0/config/config.go index 1fb4223cb..69f7af304 100644 --- a/pkg/lang/frontend/starlark/v0/config/config.go +++ b/pkg/lang/frontend/starlark/v0/config/config.go @@ -45,9 +45,28 @@ var Module = &starlarkstruct.Module{ "rstudio_server": starlark.NewBuiltin(ruleRStudioServer, ruleFuncRStudioServer), "entrypoint": starlark.NewBuiltin(ruleEntrypoint, ruleFuncEntrypoint), "repo": starlark.NewBuiltin(ruleRepo, ruleFuncRepo), + "shm_size": starlark.NewBuiltin(ruleShmSize, ruleFuncShmSize), }, } +func ruleFuncShmSize(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + var shmSize starlark.Int + + if err := starlark.UnpackArgs(ruleShmSize, args, kwargs, "size", &shmSize); err != nil { + return nil, err + } + + shmSizeInt, ok := shmSize.Int64() + if ok { + ir.ShmSize(int(shmSizeInt)) + logger.Debugf("Using %d shm size", int(shmSizeInt)) + } else { + logger.Debugf("Failed to convert shm size to int64") + } + + return starlark.None, nil +} + func ruleFuncGPU(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { var numGPUs starlark.Int diff --git a/pkg/lang/frontend/starlark/v0/config/const.go b/pkg/lang/frontend/starlark/v0/config/const.go index 4b5f7f78b..71a41b2b9 100644 --- a/pkg/lang/frontend/starlark/v0/config/const.go +++ b/pkg/lang/frontend/starlark/v0/config/const.go @@ -25,4 +25,5 @@ const ( ruleRStudioServer = "config.rstudio_server" ruleEntrypoint = "config.entrypoint" ruleRepo = "config.repo" + ruleShmSize = "config.shm_size" ) diff --git a/pkg/lang/frontend/starlark/v1/config/config.go b/pkg/lang/frontend/starlark/v1/config/config.go index 378177103..01e0f41cc 100644 --- a/pkg/lang/frontend/starlark/v1/config/config.go +++ b/pkg/lang/frontend/starlark/v1/config/config.go @@ -46,9 +46,29 @@ var Module = &starlarkstruct.Module{ "entrypoint": starlark.NewBuiltin(ruleEntrypoint, ruleFuncEntrypoint), "repo": starlark.NewBuiltin(ruleRepo, ruleFuncRepo), "owner": starlark.NewBuiltin(ruleOwner, ruleFuncOwner), + "shm_size": starlark.NewBuiltin(ruleShmSize, ruleFuncShmSize), }, } +func ruleFuncShmSize(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + var shmSize starlark.Int + + if err := starlark.UnpackArgs(ruleShmSize, args, kwargs, "size", &shmSize); err != nil { + return nil, err + } + + shmSizeInt, ok := shmSize.Int64() + + if ok { + ir.ShmSize(int(shmSizeInt)) + logger.Debugf("Using %d shm size", int(shmSizeInt)) + } else { + logger.Debugf("Failed to convert shm size to int64") + } + + return starlark.None, nil +} + func ruleFuncGPU(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { var numGPUs starlark.Int diff --git a/pkg/lang/frontend/starlark/v1/config/const.go b/pkg/lang/frontend/starlark/v1/config/const.go index 3aea8914b..be7576922 100644 --- a/pkg/lang/frontend/starlark/v1/config/const.go +++ b/pkg/lang/frontend/starlark/v1/config/const.go @@ -26,4 +26,5 @@ const ( ruleEntrypoint = "config.entrypoint" ruleRepo = "config.repo" ruleOwner = "config.owner" + ruleShmSize = "config.shm_size" ) diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 9a359a5df..9f5f03983 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -43,6 +43,7 @@ type graphVisitor interface { GetDepsFiles(deps []string) []string GPUEnabled() bool GetNumGPUs() int + GetShmSize() int Labels() (map[string]string, error) ExposedPorts() (map[string]struct{}, error) GetEntrypoint(buildContextDir string) ([]string, error) diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index c50ccf184..e840ed8c3 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -56,6 +56,7 @@ func NewGraph() ir.Graph { CUDA: nil, CUDNN: CUDNNVersionDefault, NumGPUs: 0, + ShmSize: 0, PyPIPackages: [][]string{}, RPackages: []string{}, @@ -73,6 +74,10 @@ func NewGraph() ir.Graph { var DefaultGraph = NewGraph() +func (g generalGraph) GetShmSize() int { + return g.ShmSize +} + func (g generalGraph) GetNumGPUs() int { return g.NumGPUs } diff --git a/pkg/lang/ir/v0/interface.go b/pkg/lang/ir/v0/interface.go index ee4b5d3cd..a014e68fd 100644 --- a/pkg/lang/ir/v0/interface.go +++ b/pkg/lang/ir/v0/interface.go @@ -75,6 +75,12 @@ func SystemPackage(deps []string) { g.SystemPackages = append(g.SystemPackages, deps...) } +func ShmSize(shmSize int) { + g := DefaultGraph.(*generalGraph) + + g.ShmSize = shmSize +} + func GPU(numGPUs int) { g := DefaultGraph.(*generalGraph) diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go index 95b097238..bc9a06fd7 100644 --- a/pkg/lang/ir/v0/types.go +++ b/pkg/lang/ir/v0/types.go @@ -39,6 +39,7 @@ type generalGraph struct { CUDA *string CUDNN string NumGPUs int + ShmSize int UbuntuAPTSource *string CRANMirrorURL *string diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 37a8326b8..d6c46154f 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -49,6 +49,7 @@ func NewGraph() ir.Graph { CUDA: nil, CUDNN: CUDNNVersionDefault, NumGPUs: 0, + ShmSize: 0, EnvdSyntaxVersion: "v1", PyPIPackages: [][]string{}, @@ -74,6 +75,10 @@ func (g generalGraph) GetHTTP() []ir.HTTPInfo { return g.HTTP } +func (g generalGraph) GetShmSize() int { + return g.ShmSize +} + func (g generalGraph) GetNumGPUs() int { return g.NumGPUs } diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index c08bdf3b3..4f3794089 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -121,6 +121,12 @@ func SystemPackage(deps []string) { g.SystemPackages = append(g.SystemPackages, deps...) } +func ShmSize(shmSize int) { + g := DefaultGraph.(*generalGraph) + + g.ShmSize = shmSize +} + func GPU(numGPUs int) { g := DefaultGraph.(*generalGraph) diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 5bde6fbba..53e658c04 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -40,6 +40,7 @@ type generalGraph struct { CUDA *string CUDNN string NumGPUs int + ShmSize int UbuntuAPTSource *string CRANMirrorURL *string From 653e026e8143fa1544e8742992c3cf85c4fa2a82 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 10:58:41 +0800 Subject: [PATCH 228/355] chore(deps): bump github.com/pkg/sftp from 1.13.5 to 1.13.6 (#1733) Bumps [github.com/pkg/sftp](https://github.com/pkg/sftp) from 1.13.5 to 1.13.6. - [Release notes](https://github.com/pkg/sftp/releases) - [Commits](https://github.com/pkg/sftp/compare/v1.13.5...v1.13.6) --- updated-dependencies: - dependency-name: github.com/pkg/sftp dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index 15eb91b9f..846b7cb10 100644 --- a/go.mod +++ b/go.mod @@ -32,7 +32,7 @@ require ( github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 - github.com/pkg/sftp v1.13.5 + github.com/pkg/sftp v1.13.6 github.com/schollz/progressbar/v3 v3.13.1 github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.3 diff --git a/go.sum b/go.sum index ca5997cda..75ad2f29c 100644 --- a/go.sum +++ b/go.sum @@ -717,8 +717,8 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pkg/sftp v1.13.5 h1:a3RLUqkyjYRtBTZJZ1VRrKbN3zhuPLlUc3sphVz81go= -github.com/pkg/sftp v1.13.5/go.mod h1:wHDZ0IZX6JcBYRK1TH9bcVq8G7TLpVHYIGJRFnmPfxg= +github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= +github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= @@ -884,10 +884,10 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= From e712892ffc32be7d94315cbe3a7e7e7144c1d8ef Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 28 Aug 2023 16:46:25 +0800 Subject: [PATCH 229/355] chore(deps): bump crate-ci/typos from 1.16.6 to 1.16.8 (#1749) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.6 to 1.16.8. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.6...v1.16.8) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index f09c0e92f..7e9d355ca 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.6 + uses: crate-ci/typos@v1.16.8 with: config: ./typos.toml lint: From d99cfa423c035cf1361bd22882ccc1a0b2436d64 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 1 Sep 2023 15:51:14 +0800 Subject: [PATCH 230/355] feat: abort when trying to run `envd up` on non-dev images (#1751) * feat: abort when trying to run `envd up` on non-dev images Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix v0 dev condition Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/up.go | 3 +++ pkg/builder/build.go | 4 ++++ pkg/lang/ir/graph.go | 1 + pkg/lang/ir/v0/compile.go | 4 ++++ pkg/lang/ir/v1/compile.go | 4 ++++ 5 files changed, 16 insertions(+) diff --git a/pkg/app/up.go b/pkg/app/up.go index d1d5649a7..1f7b458b5 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -195,6 +195,9 @@ func up(clicontext *cli.Context) error { if err = buildutil.InterpretEnvdDef(builder); err != nil { return err } + if !builder.GetGraph().IsDev() { + return errors.New("`envd up` only works for dev images. If you're using v1, please enable dev with `base(dev=True)`.") + } if err = buildutil.DetectEnvironment(clicontext, buildOpt); err != nil { return err } diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 8c05ff7f1..7b16464aa 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -125,6 +125,10 @@ func (b generalBuilder) ShmSize() int { return b.graph.GetShmSize() } +func (b generalBuilder) IsDev() bool { + return b.graph.IsDev() +} + func (b generalBuilder) Build(ctx context.Context, force bool) error { if !force && !b.checkIfNeedBuild(ctx) { return nil diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 9f5f03983..595c54e69 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -44,6 +44,7 @@ type graphVisitor interface { GPUEnabled() bool GetNumGPUs() int GetShmSize() int + IsDev() bool Labels() (map[string]string, error) ExposedPorts() (map[string]struct{}, error) GetEntrypoint(buildContextDir string) ([]string, error) diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index e840ed8c3..fa05db708 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -74,6 +74,10 @@ func NewGraph() ir.Graph { var DefaultGraph = NewGraph() +func (g generalGraph) IsDev() bool { + return g.Image == nil +} + func (g generalGraph) GetShmSize() int { return g.ShmSize } diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index d6c46154f..94331ce33 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -71,6 +71,10 @@ func (g *generalGraph) SetWriter(w compileui.Writer) { g.Writer = w } +func (g generalGraph) IsDev() bool { + return g.Dev +} + func (g generalGraph) GetHTTP() []ir.HTTPInfo { return g.HTTP } From ec935cf2c664e53f4b966bd27971cf2286f8d5ff Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 1 Sep 2023 16:46:09 +0800 Subject: [PATCH 231/355] docs: updated CHANGELOG.md (#1752) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 42409a39d..0163c5726 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## v0.3.40 (2023-09-01) + + * [d99cfa4](https://github.com/tensorchord/envd/commit/d99cfa423c035cf1361bd22882ccc1a0b2436d64) feat: abort when trying to run `envd up` on non-dev images (#1751) + * [a6613c7](https://github.com/tensorchord/envd/commit/a6613c7c340ee03839a97ba006afaf6653907013) feat: add shm size support (#1746) + +### Contributors + + * Keming + * heyjude + ## v0.3.39 (2023-08-15) * [3bcce05](https://github.com/tensorchord/envd/commit/3bcce055b0fd07b442b2d39f4fa9c0e4d2300e2e) feat: inherit the workdir from base image for non-dev env (#1743) From d3d24963b1fb4de2dad9151809f887237fc2c81a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Sep 2023 13:54:05 +0800 Subject: [PATCH 232/355] chore(deps): bump golang.org/x/crypto from 0.11.0 to 0.12.0 (#1727) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.11.0 to 0.12.0. - [Commits](https://github.com/golang/crypto/compare/v0.11.0...v0.12.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 846b7cb10..2bc2dc7bf 100644 --- a/go.mod +++ b/go.mod @@ -44,7 +44,7 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.11.0 + golang.org/x/crypto v0.12.0 golang.org/x/sync v0.3.0 golang.org/x/term v0.11.0 golang.org/x/time v0.3.0 @@ -189,7 +189,7 @@ require ( golang.org/x/net v0.12.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect golang.org/x/tools v0.11.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect diff --git a/go.sum b/go.sum index 75ad2f29c..bc89871e0 100644 --- a/go.sum +++ b/go.sum @@ -888,8 +888,8 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1150,8 +1150,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 90a7a346bcbcfb58e1bb2559153852d664f458d9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 3 Sep 2023 17:16:32 +0800 Subject: [PATCH 233/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.11.0 to 2.12.0 (#1750) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.11.0 to 2.12.0. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.11.0...v2.12.0) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 2bc2dc7bf..0cdcfbe23 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.11.0 + github.com/onsi/ginkgo/v2 v2.12.0 github.com/onsi/gomega v1.27.10 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b @@ -186,11 +186,11 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sys v0.11.0 // indirect golang.org/x/text v0.12.0 // indirect - golang.org/x/tools v0.11.0 // indirect + golang.org/x/tools v0.12.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index bc89871e0..ea571c3e0 100644 --- a/go.sum +++ b/go.sum @@ -671,8 +671,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= +github.com/onsi/ginkgo/v2 v2.12.0 h1:UIVDowFPwpg6yMUpPjGkYvf06K3RAiJXUhCxEwQVHRI= +github.com/onsi/ginkgo/v2 v2.12.0/go.mod h1:ZNEzXISYlqpb8S36iN71ifqLi3vVD1rVJGvWRCJOUpQ= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -985,8 +985,8 @@ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50= -golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1215,8 +1215,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 0bbac3373e855f1a58640f6a6a5053c5edbd2794 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 01:23:41 +0800 Subject: [PATCH 234/355] chore(deps): bump crate-ci/typos from 1.16.8 to 1.16.10 (#1758) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.8 to 1.16.10. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.8...v1.16.10) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 7e9d355ca..3a33660e8 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v3 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.8 + uses: crate-ci/typos@v1.16.10 with: config: ./typos.toml lint: From ab2f34ccdc88f5c6fc8100b535c4ef3b6b3a5bb8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 01:24:00 +0800 Subject: [PATCH 235/355] chore(deps): bump github.com/charmbracelet/lipgloss from 0.7.1 to 0.8.0 (#1753) Bumps [github.com/charmbracelet/lipgloss](https://github.com/charmbracelet/lipgloss) from 0.7.1 to 0.8.0. - [Release notes](https://github.com/charmbracelet/lipgloss/releases) - [Commits](https://github.com/charmbracelet/lipgloss/compare/v0.7.1...v0.8.0) --- updated-dependencies: - dependency-name: github.com/charmbracelet/lipgloss dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index 0cdcfbe23..ee3de606a 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 github.com/charmbracelet/bubbletea v0.24.2 - github.com/charmbracelet/lipgloss v0.7.1 + github.com/charmbracelet/lipgloss v0.8.0 github.com/cockroachdb/errors v1.10.0 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 github.com/containerd/containerd v1.7.3 @@ -144,7 +144,7 @@ require ( github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.15.1 // indirect + github.com/muesli/termenv v0.15.2 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/opencontainers/runc v1.1.5 // indirect diff --git a/go.sum b/go.sum index ea571c3e0..b35894aa8 100644 --- a/go.sum +++ b/go.sum @@ -238,8 +238,8 @@ github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghf github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= -github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= -github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= +github.com/charmbracelet/lipgloss v0.8.0 h1:IS00fk4XAHcf8uZKc3eHeMUTCxUH6NkaTrdyCQk84RU= +github.com/charmbracelet/lipgloss v0.8.0/go.mod h1:p4eYUZZJ/0oXTuCQKFF8mqyKCz0ja6y+7DniDDw5KKU= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= @@ -653,8 +653,8 @@ github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELU github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.15.1 h1:UzuTb/+hhlBugQz28rpzey4ZuKcZ03MeKsoG7IJZIxs= -github.com/muesli/termenv v0.15.1/go.mod h1:HeAQPTzpfs016yGtA4g00CsdYnVLJvxsS4ANqrZs2sQ= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= From b88435e7cd3007494b80547f823ee224a5fd3c27 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 16:33:47 +0800 Subject: [PATCH 236/355] chore(deps): bump golang.org/x/term from 0.11.0 to 0.12.0 (#1756) Bumps [golang.org/x/term](https://github.com/golang/term) from 0.11.0 to 0.12.0. - [Commits](https://github.com/golang/term/compare/v0.11.0...v0.12.0) --- updated-dependencies: - dependency-name: golang.org/x/term dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index ee3de606a..1d48c3d07 100644 --- a/go.mod +++ b/go.mod @@ -46,7 +46,7 @@ require ( go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.12.0 golang.org/x/sync v0.3.0 - golang.org/x/term v0.11.0 + golang.org/x/term v0.12.0 golang.org/x/time v0.3.0 ) @@ -188,7 +188,7 @@ require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.11.0 // indirect + golang.org/x/sys v0.12.0 // indirect golang.org/x/text v0.12.0 // indirect golang.org/x/tools v0.12.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect diff --git a/go.sum b/go.sum index b35894aa8..2a6800789 100644 --- a/go.sum +++ b/go.sum @@ -1129,16 +1129,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= -golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= +golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= From 6acbd6af38fd7ae7978e94f2a3022c376bf4ba5c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Sep 2023 16:34:07 +0800 Subject: [PATCH 237/355] chore(deps): bump github.com/google/uuid from 1.3.0 to 1.3.1 (#1755) Bumps [github.com/google/uuid](https://github.com/google/uuid) from 1.3.0 to 1.3.1. - [Release notes](https://github.com/google/uuid/releases) - [Changelog](https://github.com/google/uuid/blob/master/CHANGELOG.md) - [Commits](https://github.com/google/uuid/compare/v1.3.0...v1.3.1) --- updated-dependencies: - dependency-name: github.com/google/uuid dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 1d48c3d07..076d29a0d 100644 --- a/go.mod +++ b/go.mod @@ -20,7 +20,7 @@ require ( github.com/gliderlabs/ssh v0.3.5 github.com/go-git/go-git/v5 v5.4.2 github.com/golang/mock v1.6.0 - github.com/google/uuid v1.3.0 + github.com/google/uuid v1.3.1 github.com/hashicorp/go-getter v1.7.2 github.com/mattn/go-isatty v0.0.19 github.com/moby/buildkit v0.11.6 diff --git a/go.sum b/go.sum index 2a6800789..7e35e3e93 100644 --- a/go.sum +++ b/go.sum @@ -490,8 +490,9 @@ github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkj github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= From 13702e9a941bba28038edf997f2161e5a703fe6a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 10:06:38 +0800 Subject: [PATCH 238/355] chore(deps): bump github.com/cyphar/filepath-securejoin from 0.2.3 to 0.2.4 (#1759) chore(deps): bump github.com/cyphar/filepath-securejoin Bumps [github.com/cyphar/filepath-securejoin](https://github.com/cyphar/filepath-securejoin) from 0.2.3 to 0.2.4. - [Release notes](https://github.com/cyphar/filepath-securejoin/releases) - [Commits](https://github.com/cyphar/filepath-securejoin/compare/v0.2.3...v0.2.4) --- updated-dependencies: - dependency-name: github.com/cyphar/filepath-securejoin dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 076d29a0d..0abe71804 100644 --- a/go.mod +++ b/go.mod @@ -77,7 +77,7 @@ require ( github.com/containers/ocicrypt v1.1.7 // indirect github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/cyphar/filepath-securejoin v0.2.3 // indirect + github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect diff --git a/go.sum b/go.sum index 7e35e3e93..a7b0e3a74 100644 --- a/go.sum +++ b/go.sum @@ -313,8 +313,9 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= +github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= From 443c3184341aded92e8755d3c69e541f742857cf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 11:34:27 +0800 Subject: [PATCH 239/355] chore(deps): bump github.com/cockroachdb/errors from 1.10.0 to 1.11.1 (#1765) Bumps [github.com/cockroachdb/errors](https://github.com/cockroachdb/errors) from 1.10.0 to 1.11.1. - [Release notes](https://github.com/cockroachdb/errors/releases) - [Commits](https://github.com/cockroachdb/errors/compare/v1.10.0...v1.11.1) --- updated-dependencies: - dependency-name: github.com/cockroachdb/errors dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0abe71804..aa4d9d58f 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/bcicen/ctop v0.7.7 github.com/charmbracelet/bubbletea v0.24.2 github.com/charmbracelet/lipgloss v0.8.0 - github.com/cockroachdb/errors v1.10.0 + github.com/cockroachdb/errors v1.11.1 github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 github.com/containerd/containerd v1.7.3 github.com/containers/image/v5 v5.25.0 diff --git a/go.sum b/go.sum index a7b0e3a74..2c59665c1 100644 --- a/go.sum +++ b/go.sum @@ -259,8 +259,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/errors v1.10.0 h1:lfxS8zZz1+OjtV4MtNWgboi/W5tyLEB6VQZBXN+0VUU= -github.com/cockroachdb/errors v1.10.0/go.mod h1:lknhIsEVQ9Ss/qKDBQS/UqFSvPQjOwNq2qyKAxtHRqE= +github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= +github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= From bffc025da8725e2eab060d079bce2777c6987388 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 11 Sep 2023 18:25:20 +0800 Subject: [PATCH 240/355] feat: add the reference subcommand to generate the markdown doc (#1766) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- README.md | 3 +++ pkg/app/app.go | 1 + pkg/app/reference.go | 62 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 pkg/app/reference.go diff --git a/README.md b/README.md index 330b29f0a..71cf7f8d3 100644 --- a/README.md +++ b/README.md @@ -265,6 +265,9 @@ envd-quick-start http://localhost:42779 envd-quick-start.envd /home/g > <a name="v1-moby">(a)</a> To use the `moby` builder, you will need to create a new context with `envd context create --name moby-test --builder moby-worker --use`. > For more information about the `moby` builder, check the [issue-1693](https://github.com/tensorchord/envd/issues/1693). +> **Important** +> For more details, check the [upgrade to v1](https://envd.tensorchord.ai/guide/v1.html) doc. + ## More on documentation 📝 See [envd documentation](https://envd.tensorchord.ai/guide/getting-started.html). diff --git a/pkg/app/app.go b/pkg/app/app.go index 3a56d70f4..4784a2cdc 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -98,6 +98,7 @@ func New() EnvdApp { CommandDebug, CommandVersion, CommandTop, + CommandReference, } internalApp.CustomAppHelpTemplate = ` envd - Development environment for data science and AI/ML teams diff --git a/pkg/app/reference.go b/pkg/app/reference.go new file mode 100644 index 000000000..eceed3cca --- /dev/null +++ b/pkg/app/reference.go @@ -0,0 +1,62 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package app + +import ( + "fmt" + "os" + + "github.com/cockroachdb/errors" + "github.com/urfave/cli/v2" +) + +var CommandReference = &cli.Command{ + Name: "reference", + Category: CategoryOther, + Usage: "Print envd reference documentation", + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "output", + Usage: "Output file, if not specified, print to stderr", + Value: "", + }, + }, + Action: outputReference, +} + +const referenceHeader = ` +# envd CLI Reference + +This is a reference for the CLI commands of envd. + +::: tip +The documentation is auto-generated from [envd app](https://github.com/tensorchord/envd/blob/main/pkg/app/app.go), please do not edit it manually. +::: + +` + +func outputReference(clicontext *cli.Context) error { + doc, err := clicontext.App.ToMarkdown() + if err != nil { + return errors.Wrap(err, "failed to generate the markdown document") + } + content := referenceHeader + doc + output := clicontext.String("output") + if len(output) > 0 { + return os.WriteFile(output, []byte(content), 0644) + } + fmt.Println(content) + return nil +} From 61ced2f60dd4bc0699017b632c2086a48be760c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Sep 2023 18:52:10 +0800 Subject: [PATCH 241/355] chore(deps): bump actions/checkout from 3 to 4 (#1761) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 18 +++++++++--------- .github/workflows/changelog.yaml | 2 +- .github/workflows/envd-lint.yml | 2 +- .github/workflows/envd-starship.yaml | 2 +- .github/workflows/link-check.yml | 2 +- .github/workflows/nightly.yml | 20 ++++++++++---------- .github/workflows/release.yml | 10 +++++----- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 3a33660e8..88434e15d 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -27,7 +27,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout Actions Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Check spelling with custom config file uses: crate-ci/typos@v1.16.10 with: @@ -39,7 +39,7 @@ jobs: - uses: actions/setup-go@v4 with: go-version: 1.19 - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache Go modules uses: actions/cache@preview with: @@ -71,7 +71,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -107,7 +107,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -143,7 +143,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -179,7 +179,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -215,7 +215,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -251,7 +251,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -279,7 +279,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index 27d92634b..23b633108 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -10,7 +10,7 @@ jobs: runs-on: ubuntu-latest name: Generate changelog steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: ref: main fetch-depth: 0 diff --git a/.github/workflows/envd-lint.yml b/.github/workflows/envd-lint.yml index b844d3a8c..d32720158 100644 --- a/.github/workflows/envd-lint.yml +++ b/.github/workflows/envd-lint.yml @@ -28,7 +28,7 @@ jobs: name: envd-lint runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: python-version: 3.8 diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml index 9b911f351..9843ccb70 100644 --- a/.github/workflows/envd-starship.yaml +++ b/.github/workflows/envd-starship.yaml @@ -16,7 +16,7 @@ jobs: name: Push starship image to Docker Hub runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Docker Login uses: docker/login-action@v2 with: diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml index 1421dc0bc..1cfab5b7f 100644 --- a/.github/workflows/link-check.yml +++ b/.github/workflows/link-check.yml @@ -16,7 +16,7 @@ jobs: markdown-link-check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: gaurav-nelson/github-action-markdown-link-check@v1 with: file-path: "README.md" diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 019bdc6ce..39caf4560 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/setup-go@v4 with: go-version: 1.19 - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Cache Go modules uses: actions/cache@preview with: @@ -52,7 +52,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -89,7 +89,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -126,7 +126,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -161,7 +161,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -200,7 +200,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -228,7 +228,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -265,7 +265,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -302,7 +302,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: @@ -339,7 +339,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Check out code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Go uses: actions/setup-go@v4 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aa4e4903a..72890d65e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: fetch-depth: 0 - name: Set up Go @@ -55,7 +55,7 @@ jobs: matrix: os: [macos-11, ubuntu-20.04] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Get gobin uses: actions/download-artifact@v3 with: @@ -100,7 +100,7 @@ jobs: runs-on: ubuntu-latest needs: goreleaser steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Cache Docker layers @@ -126,7 +126,7 @@ jobs: runs-on: ubuntu-latest needs: goreleaser steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Cache Docker layers @@ -164,7 +164,7 @@ jobs: tag_suffix: "-cuda-11.6.2-cudnn-8" needs: image_publish steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Cache Docker layers From 452b155cb93b48f0f36d2f4c32f26dd23beebd9d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Sep 2023 19:14:57 +0800 Subject: [PATCH 242/355] chore(deps): bump crate-ci/typos from 1.16.10 to 1.16.11 (#1760) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.10 to 1.16.11. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.10...v1.16.11) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 88434e15d..c6e6dee88 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.10 + uses: crate-ci/typos@v1.16.11 with: config: ./typos.toml lint: From 8a8195aa775d0a61526109d19a461059a08c7525 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 14:48:20 +0800 Subject: [PATCH 243/355] chore(deps): bump docker/build-push-action from 4 to 5 (#1771) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4 to 5. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v4...v5) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/envd-starship.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml index 9843ccb70..c55d062b1 100644 --- a/.github/workflows/envd-starship.yaml +++ b/.github/workflows/envd-starship.yaml @@ -27,7 +27,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: push: true file: base-images/envd-starship/envd-starship.Dockerfile From f295162187fc3a26e16ee65e23f435be55a5f57d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 14:48:40 +0800 Subject: [PATCH 244/355] chore(deps): bump docker/setup-qemu-action from 2 to 3 (#1774) Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-qemu-action/releases) - [Commits](https://github.com/docker/setup-qemu-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-qemu-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/envd-starship.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml index c55d062b1..459a99a4c 100644 --- a/.github/workflows/envd-starship.yaml +++ b/.github/workflows/envd-starship.yaml @@ -23,7 +23,7 @@ jobs: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} - name: Docker Setup QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 - name: Build and push From de9f5719db791d02b209a78c5c6443c5f51b5f2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:04:58 +0800 Subject: [PATCH 245/355] chore(deps): bump docker/login-action from 2 to 3 (#1772) Bumps [docker/login-action](https://github.com/docker/login-action) from 2 to 3. - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/login-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/envd-starship.yaml | 2 +- .github/workflows/release.yml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml index 459a99a4c..dd32543a6 100644 --- a/.github/workflows/envd-starship.yaml +++ b/.github/workflows/envd-starship.yaml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Docker Login - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 72890d65e..e1d7e73a5 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -24,7 +24,7 @@ jobs: with: go-version: 1.19.10 - name: Docker Login - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} @@ -112,7 +112,7 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Docker Login - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} @@ -138,7 +138,7 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Docker Login - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} @@ -186,7 +186,7 @@ jobs: mv dist/envd_linux_amd64_v1/envd /usr/local/bin/envd chmod +x /usr/local/bin/envd - name: Docker Login - uses: docker/login-action@v2 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} From 70a195a0b0dd0b622a767b1847edda7607c45fd8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 21 Sep 2023 16:05:20 +0800 Subject: [PATCH 246/355] chore(deps): bump docker/setup-buildx-action from 2 to 3 (#1770) Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2 to 3. - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v2...v3) --- updated-dependencies: - dependency-name: docker/setup-buildx-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/envd-starship.yaml | 2 +- .github/workflows/release.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml index dd32543a6..4172c2825 100644 --- a/.github/workflows/envd-starship.yaml +++ b/.github/workflows/envd-starship.yaml @@ -25,7 +25,7 @@ jobs: - name: Docker Setup QEMU uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Build and push uses: docker/build-push-action@v5 with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e1d7e73a5..808ee9343 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -102,7 +102,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Cache Docker layers uses: actions/cache@v3 id: cache @@ -128,7 +128,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Cache Docker layers uses: actions/cache@v3 id: cache @@ -166,7 +166,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Cache Docker layers uses: actions/cache@v3 id: cache From 481e440fe2114196e6c0b8088dc965a17325f01d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 10:23:03 +0800 Subject: [PATCH 247/355] chore(deps): bump crate-ci/typos from 1.16.11 to 1.16.13 (#1775) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.11 to 1.16.13. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.11...v1.16.13) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index c6e6dee88..5d39ad04f 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.11 + uses: crate-ci/typos@v1.16.13 with: config: ./typos.toml lint: From 07c036ed1acd6f15423baa6a91166140ed0ba908 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Sep 2023 10:23:58 +0800 Subject: [PATCH 248/355] chore(deps): bump pypa/cibuildwheel from 2.15.0 to 2.16.0 (#1776) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.15.0 to 2.16.0. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.15.0...v2.16.0) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 808ee9343..6f1d7667a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.15.0 + uses: pypa/cibuildwheel@v2.16.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From f1ce95be2ac458c7f7ed00d3f582b4af80500c6b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:53:32 +0800 Subject: [PATCH 249/355] chore(deps): bump pypa/cibuildwheel from 2.16.0 to 2.16.1 (#1779) --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6f1d7667a..be23ab880 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.16.0 + uses: pypa/cibuildwheel@v2.16.1 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From efdd276dcd7c94901f0e0b31678df8d44f2076bc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 10:54:08 +0800 Subject: [PATCH 250/355] chore(deps): bump crate-ci/typos from 1.16.13 to 1.16.15 (#1778) --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5d39ad04f..5bafc7129 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.13 + uses: crate-ci/typos@v1.16.15 with: config: ./typos.toml lint: From 2ec8e5da818c776376160b882f02552aade29328 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 7 Oct 2023 09:32:25 +0800 Subject: [PATCH 251/355] chore(deps): bump github.com/onsi/ginkgo/v2 from 2.12.0 to 2.12.1 (#1777) Bumps [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo) from 2.12.0 to 2.12.1. - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.12.0...v2.12.1) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index aa4d9d58f..ee8573d99 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.12.0 + github.com/onsi/ginkgo/v2 v2.12.1 github.com/onsi/gomega v1.27.10 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b diff --git a/go.sum b/go.sum index 2c59665c1..d4f35f311 100644 --- a/go.sum +++ b/go.sum @@ -673,8 +673,8 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.12.0 h1:UIVDowFPwpg6yMUpPjGkYvf06K3RAiJXUhCxEwQVHRI= -github.com/onsi/ginkgo/v2 v2.12.0/go.mod h1:ZNEzXISYlqpb8S36iN71ifqLi3vVD1rVJGvWRCJOUpQ= +github.com/onsi/ginkgo/v2 v2.12.1 h1:uHNEO1RP2SpuZApSkel9nEh1/Mu+hmQe7Q+Pepg5OYA= +github.com/onsi/ginkgo/v2 v2.12.1/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= From 2645c948ee6ecc3d70271bfeff1503586e813efa Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 10:31:20 +0800 Subject: [PATCH 252/355] chore(deps): bump pypa/cibuildwheel from 2.16.1 to 2.16.2 (#1780) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.16.1 to 2.16.2. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.16.1...v2.16.2) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index be23ab880..18c39af1d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -74,7 +74,7 @@ jobs: mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd - name: Build wheels - uses: pypa/cibuildwheel@v2.16.1 + uses: pypa/cibuildwheel@v2.16.2 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 0915c681ac79b57d1f8e2f60cebcff07dd355350 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 10:32:00 +0800 Subject: [PATCH 253/355] chore(deps): bump crate-ci/typos from 1.16.15 to 1.16.17 (#1781) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.15 to 1.16.17. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.15...v1.16.17) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5bafc7129..6785ac9ea 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.15 + uses: crate-ci/typos@v1.16.17 with: config: ./typos.toml lint: From ad2e1211c004f3c02e10e326d1969aa7c8cedb75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Oct 2023 20:19:06 -0500 Subject: [PATCH 254/355] chore(deps): bump golang.org/x/net from 0.14.0 to 0.17.0 (#1784) Bumps [golang.org/x/net](https://github.com/golang/net) from 0.14.0 to 0.17.0. - [Commits](https://github.com/golang/net/compare/v0.14.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/net dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index ee8573d99..48b7a1a3e 100644 --- a/go.mod +++ b/go.mod @@ -44,9 +44,9 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.12.0 + golang.org/x/crypto v0.14.0 golang.org/x/sync v0.3.0 - golang.org/x/term v0.12.0 + golang.org/x/term v0.13.0 golang.org/x/time v0.3.0 ) @@ -186,10 +186,10 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect golang.org/x/tools v0.12.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect diff --git a/go.sum b/go.sum index d4f35f311..e1d2b150d 100644 --- a/go.sum +++ b/go.sum @@ -890,8 +890,8 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -987,8 +987,8 @@ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1131,16 +1131,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= -golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= -golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1152,8 +1152,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From a8ce9526d05da0b27107350f1943fc611aefe451 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 10:11:51 +0800 Subject: [PATCH 255/355] chore(deps): bump crate-ci/typos from 1.16.17 to 1.16.19 (#1785) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.17 to 1.16.19. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.17...v1.16.19) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6785ac9ea..b3e2b2149 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.17 + uses: crate-ci/typos@v1.16.19 with: config: ./typos.toml lint: From 4482db07dda9da62d2a7fed26d7ae5809a68112a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 11:01:28 +0800 Subject: [PATCH 256/355] chore(deps): bump crate-ci/typos from 1.16.19 to 1.16.20 (#1789) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.19 to 1.16.20. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.19...v1.16.20) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b3e2b2149..5e1371d85 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.19 + uses: crate-ci/typos@v1.16.20 with: config: ./typos.toml lint: From 9027d3593b37898dadaaefa2c9a1078611450da6 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 24 Oct 2023 17:02:39 +0800 Subject: [PATCH 257/355] feat: warn about envd v0 `os` and `image` usage (#1790) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v0/interface.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/lang/ir/v0/interface.go b/pkg/lang/ir/v0/interface.go index a014e68fd..b823fe347 100644 --- a/pkg/lang/ir/v0/interface.go +++ b/pkg/lang/ir/v0/interface.go @@ -17,6 +17,7 @@ package v0 import ( "github.com/cockroachdb/errors" "github.com/opencontainers/go-digest" + "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/editor/vscode" "github.com/tensorchord/envd/pkg/lang/ir" @@ -35,9 +36,13 @@ func Base(os, language, image string) error { } if len(os) > 0 { g.OS = os + logrus.Warn("`os` only affects the GPU base image. If you want to use a different base image, " + + "envd v1 has better support. Check the doc https://envd.tensorchord.ai/guide/v1.html") } if image != "" { g.Image = &image + logrus.Warn("Custom base image can only be used in non-dev env for envd v0. " + + "For better custom image support, check the envd v1 doc https://envd.tensorchord.ai/guide/v1.html") } return nil } From cbf74f15a6def22f076495f3c46e0f8ed20e1ce6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 10:25:26 +0800 Subject: [PATCH 258/355] chore(deps): bump crate-ci/typos from 1.16.20 to 1.16.21 (#1794) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.20 to 1.16.21. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.20...v1.16.21) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5e1371d85..5db42d93c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.20 + uses: crate-ci/typos@v1.16.21 with: config: ./typos.toml lint: From 4c132241ceee866819fed9495b98bf13a42ecae5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 30 Oct 2023 19:05:12 +0800 Subject: [PATCH 259/355] fix: indent-error-flow lint (#1795) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/envd/docker.go | 3 +-- pkg/metrics/widget.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index b7eebf749..b8629a44f 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -706,9 +706,8 @@ func (e dockerEngine) GPUEnabled(ctx context.Context) (bool, error) { } else if strings.HasSuffix(info.KernelVersion, "WSL2") { logrus.Warn("We couldn't detect if your runtime support GPU on WSL2, we will continue to run your environment.") return true, nil - } else { - return false, nil } + return false, nil } func (e dockerEngine) GetImage(ctx context.Context, image string) (types.EnvdImage, error) { diff --git a/pkg/metrics/widget.go b/pkg/metrics/widget.go index c8d11de76..234874511 100644 --- a/pkg/metrics/widget.go +++ b/pkg/metrics/widget.go @@ -127,7 +127,6 @@ func colorScale(n int) ui.Color { return ui.ColorGreen } else if n < 80 { return ui.ColorYellow - } else { - return ui.ColorRed } + return ui.ColorRed } From ecd91ea5e8b416782678f6cacf57071ac2635408 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 20:25:29 +0800 Subject: [PATCH 260/355] chore(deps): bump github.com/hashicorp/go-getter from 1.7.2 to 1.7.3 (#1788) Bumps [github.com/hashicorp/go-getter](https://github.com/hashicorp/go-getter) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/hashicorp/go-getter/releases) - [Changelog](https://github.com/hashicorp/go-getter/blob/main/.goreleaser.yml) - [Commits](https://github.com/hashicorp/go-getter/compare/v1.7.2...v1.7.3) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-getter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 48b7a1a3e..cfadd37bf 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/go-git/go-git/v5 v5.4.2 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.1 - github.com/hashicorp/go-getter v1.7.2 + github.com/hashicorp/go-getter v1.7.3 github.com/mattn/go-isatty v0.0.19 github.com/moby/buildkit v0.11.6 github.com/moby/term v0.5.0 diff --git a/go.sum b/go.sum index e1d2b150d..943130346 100644 --- a/go.sum +++ b/go.sum @@ -526,8 +526,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.2 h1:uJDtyXwEfalmp1PqdxuhZqrNkUyClZAhVeZYTArbqkg= -github.com/hashicorp/go-getter v1.7.2/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= +github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= From 6b0155be5a72eb54e7f4c94ab0bd082d5de494f6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 20:26:12 +0800 Subject: [PATCH 261/355] chore(deps): bump google.golang.org/grpc from 1.55.0 to 1.56.3 (#1791) Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from 1.55.0 to 1.56.3. - [Release notes](https://github.com/grpc/grpc-go/releases) - [Commits](https://github.com/grpc/grpc-go/compare/v1.55.0...v1.56.3) --- updated-dependencies: - dependency-name: google.golang.org/grpc dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 ++-- go.sum | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index cfadd37bf..e66a94047 100644 --- a/go.mod +++ b/go.mod @@ -52,7 +52,7 @@ require ( require ( cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.19.0 // indirect + cloud.google.com/go/compute v1.19.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v0.13.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect @@ -195,7 +195,7 @@ require ( google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.55.0 // indirect + google.golang.org/grpc v1.56.3 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index 943130346..5a1363fac 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.19.0 h1:+9zda3WGgW1ZSTlVppLCYFIr48Pa35q1uG2N1itbCEQ= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= @@ -259,6 +259,7 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= @@ -347,6 +348,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= @@ -1429,8 +1431,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= -google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= +google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= From 5328b3af89ece85b7cde9bd10886feeb9aa1c46d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 8 Nov 2023 20:27:46 +0800 Subject: [PATCH 262/355] chore(deps): bump github.com/docker/cli from 24.0.1+incompatible to 24.0.7+incompatible (#1792) chore(deps): bump github.com/docker/cli Bumps [github.com/docker/cli](https://github.com/docker/cli) from 24.0.1+incompatible to 24.0.7+incompatible. - [Commits](https://github.com/docker/cli/compare/v24.0.1...v24.0.7) --- updated-dependencies: - dependency-name: github.com/docker/cli dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index e66a94047..c2e98e970 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/containerd/containerd v1.7.3 github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v24.0.1+incompatible + github.com/docker/cli v24.0.7+incompatible github.com/docker/docker v23.0.3+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 diff --git a/go.sum b/go.sum index 5a1363fac..cbdd3c142 100644 --- a/go.sum +++ b/go.sum @@ -321,8 +321,8 @@ github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v24.0.1+incompatible h1:uVl5Xv/39kZJpDo9VaktTOYBc702sdYYF33FqwUG/dM= -github.com/docker/cli v24.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= +github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= From b99a18022eee60c495f2bd06ab7e261e40c43e13 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 30 Nov 2023 23:01:01 +0800 Subject: [PATCH 263/355] chore: fix typo vertex (#1799) * chore: fix typo vertex Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix build Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 2 +- pkg/progress/progressui/display.go | 12 ++++++------ pkg/progress/progressui/printer.go | 2 +- typos.toml | 2 ++ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 5db42d93c..68f533602 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.21 + uses: crate-ci/typos@v1.16.23 with: config: ./typos.toml lint: diff --git a/pkg/progress/progressui/display.go b/pkg/progress/progressui/display.go index 51b4249e1..8f0b044da 100644 --- a/pkg/progress/progressui/display.go +++ b/pkg/progress/progressui/display.go @@ -133,7 +133,7 @@ type trace struct { w io.Writer startTime *time.Time localTimeDiff time.Duration - vertexes []*vertex + vertices []*vertex byDigest map[digest.Digest]*vertex updates map[digest.Digest]struct{} modeConsole bool @@ -378,7 +378,7 @@ func newTrace(w io.Writer, modeConsole bool) *trace { func (t *trace) warnings() []client.VertexWarning { var out []client.VertexWarning - for _, v := range t.vertexes { + for _, v := range t.vertices { out = append(out, v.warnings...) } return out @@ -478,7 +478,7 @@ func (t *trace) update(s *client.SolveStatus, termWidth int) { if t.localTimeDiff == 0 { t.localTimeDiff = time.Since(*v.Started) } - t.vertexes = append(t.vertexes, t.byDigest[v.Digest]) + t.vertices = append(t.vertices, t.byDigest[v.Digest]) } // allow a duplicate initial vertex that shouldn't reset state if !(prev != nil && prev.isStarted() && v.Started == nil) { @@ -509,7 +509,7 @@ func (t *trace) update(s *client.SolveStatus, termWidth int) { continue } if newlyRevealed { - t.vertexes = append(t.vertexes, group.vertex) + t.vertices = append(t.vertices, group.vertex) } if changed { group.update(1) @@ -584,7 +584,7 @@ func (t *trace) update(s *client.SolveStatus, termWidth int) { } func (t *trace) printErrorLogs(f io.Writer) { - for _, v := range t.vertexes { + for _, v := range t.vertices { if v.Error != "" && !strings.HasSuffix(v.Error, context.Canceled.Error()) { fmt.Fprintln(f, "------") fmt.Fprintf(f, " > %s:\n", v.Name) @@ -625,7 +625,7 @@ func (t *trace) displayInfo() (d displayInfo) { } } - for _, v := range t.vertexes { + for _, v := range t.vertices { if v.jobCached { d.jobs = append(d.jobs, v.jobs...) continue diff --git a/pkg/progress/progressui/printer.go b/pkg/progress/progressui/printer.go index c2fb92b2b..987ab61e2 100644 --- a/pkg/progress/progressui/printer.go +++ b/pkg/progress/progressui/printer.go @@ -326,7 +326,7 @@ func (p *textMux) print(t *trace) { } } - // fair split between vertexes + // fair split between vertices if 1.0/(1.0-stats[current].share)*antiFlicker.Seconds() < stats[current].blockTime.Seconds() { p.printVtx(t, max) return diff --git a/typos.toml b/typos.toml index 33ba3f822..1d127d1ee 100644 --- a/typos.toml +++ b/typos.toml @@ -4,3 +4,5 @@ extend-exclude = ["CHANGELOG.md", "go.mod", "go.sum"] [default.extend-words] iterm = "iterm" WRONLY = "WRONLY" +# this typo is introduced in the upstream library +vertexes = "vertexes" From af6ebf45d46452f983d79993b42d2d039e1a1451 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 10:13:24 +0800 Subject: [PATCH 264/355] chore(deps): bump crate-ci/typos from 1.16.23 to 1.16.24 (#1812) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.23 to 1.16.24. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.23...v1.16.24) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 68f533602..dac37a3b6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.23 + uses: crate-ci/typos@v1.16.24 with: config: ./typos.toml lint: From ff60292972c1ae580b054c0ce1a5e4a1a0ac0d07 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 10:14:13 +0800 Subject: [PATCH 265/355] chore(deps): bump actions/setup-python from 4 to 5 (#1813) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/envd-lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/envd-lint.yml b/.github/workflows/envd-lint.yml index d32720158..bcc80be06 100644 --- a/.github/workflows/envd-lint.yml +++ b/.github/workflows/envd-lint.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: actions/setup-python@v4 + - uses: actions/setup-python@v5 with: python-version: 3.8 - name: Lint From 158d5db7783e79c03b1430c94633b322f3ec7d7b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 02:25:28 +0000 Subject: [PATCH 266/355] chore(deps): bump actions/setup-go from 4 to 5 (#1811) Bumps [actions/setup-go](https://github.com/actions/setup-go) from 4 to 5. - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-go dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 16 ++++++++-------- .github/workflows/nightly.yml | 20 ++++++++++---------- .github/workflows/release.yml | 2 +- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index dac37a3b6..344bce85a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -36,7 +36,7 @@ jobs: name: lint runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.19 - uses: actions/checkout@v4 @@ -73,7 +73,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -109,7 +109,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -145,7 +145,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19.10 - name: Cache Go modules @@ -181,7 +181,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -217,7 +217,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -253,7 +253,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -281,7 +281,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Install bins diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 39caf4560..c751adfe2 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -16,7 +16,7 @@ jobs: if: github.repository == 'tensorchord/envd' runs-on: ubuntu-latest steps: - - uses: actions/setup-go@v4 + - uses: actions/setup-go@v5 with: go-version: 1.19 - uses: actions/checkout@v4 @@ -54,7 +54,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -91,7 +91,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -128,7 +128,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -163,7 +163,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Install bins @@ -202,7 +202,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -230,7 +230,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -267,7 +267,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19.10 - name: Cache Go modules @@ -304,7 +304,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules @@ -341,7 +341,7 @@ jobs: - name: Check out code uses: actions/checkout@v4 - name: Setup Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19 - name: Cache Go modules diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 18c39af1d..dec430582 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 - name: Set up Go - uses: actions/setup-go@v4 + uses: actions/setup-go@v5 with: go-version: 1.19.10 - name: Docker Login From 29788b550cc54487f2da81055994bfb216d872f4 Mon Sep 17 00:00:00 2001 From: Shao Wang <77665902+Electronic-Waste@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:27:35 +0800 Subject: [PATCH 267/355] feat(log): switch to structured logging(#issue 889) (#1821) * refactor: refactor unstructured log in /pkg/app. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix log code in /pkg/buildkitd. In /pkg/buildkitd/buildkit.d line201, change `logrus.Debugf` to `c.logger.Debugf`. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: replace `logrus.Error()` with `logrus.WithError().Error()` in /pkg/driver. In /pkg/driver/nerdctl/nerdctl.go line101 and line188, replace `logrus.Error()` with `logrus.WithError().Error()`. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: change some `logrus` to `logger` in /pkg/envd/docker.go. Signed-off-by: Electronic-Waste <2690692950@qq.com> * refactor: change `logrus.Error()` to `logrus.WithError().Error()` in /pkg/metrics. In /pkg/metrics/docker_collector.go line 58, change `logrus.Error()` to `logrus.WithError().Error()`. Signed-off-by: Electronic-Waste <2690692950@qq.com> * refactor: refactor unstructured log in /pkg/ssh. Signed-off-by: Electronic-Waste <2690692950@qq.com> * refactor: refactor unstructured log in /pkg/syncthing. Signed-off-by: Electronic-Waste <2690692950@qq.com> * refactor: change `logrus.Fatal()` to `logrus.WithError().Fatal()`." In /cmd/envd-sshd/main.go line 106, change `logrus.Fatal()` to `logrus.WithError().Fatal()`. Signed-off-by: Electronic-Waste <2690692950@qq.com> * chore: reformat the log code style. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: pass lint test. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix log code as Keming requested. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix log code as Keming requested. #2 Signed-off-by: Electronic-Waste <2690692950@qq.com> --------- Signed-off-by: Electronic-Waste <2690692950@qq.com> --- cmd/envd-sshd/main.go | 2 +- pkg/app/app.go | 5 ++- pkg/app/bootstrap.go | 45 +++++++++++++++++------- pkg/app/build.go | 5 ++- pkg/app/completion.go | 3 +- pkg/app/context_create.go | 14 ++++++-- pkg/app/context_rm.go | 3 +- pkg/app/context_use.go | 3 +- pkg/app/debug_llb.go | 1 + pkg/app/destroy.go | 11 ++++-- pkg/app/exec.go | 9 ++++- pkg/app/image_remove.go | 13 +++++-- pkg/app/login.go | 13 ++++--- pkg/app/pause.go | 2 +- pkg/app/resume.go | 2 +- pkg/app/run.go | 24 +++++++++---- pkg/app/telemetry/reporter.go | 14 ++++---- pkg/app/up.go | 10 +++--- pkg/builder/build.go | 6 ++-- pkg/builder/dep_check.go | 2 +- pkg/buildkitd/buildkitd.go | 2 +- pkg/driver/nerdctl/nerdctl.go | 4 +-- pkg/envd/docker.go | 6 ++-- pkg/envd/envdserver.go | 2 +- pkg/metrics/docker_collector.go | 3 +- pkg/remote/sshd/sshd.go | 4 +-- pkg/ssh/config/ssh_config.go | 5 +-- pkg/ssh/copy.go | 4 +-- pkg/ssh/ssh.go | 51 +++++++++++++++++---------- pkg/syncthing/client.go | 6 +++- pkg/syncthing/config.go | 3 +- pkg/syncthing/device.go | 12 +++++-- pkg/syncthing/syncthing.go | 61 ++++++++++++++++++++++++++------- pkg/util/osutil/wsl.go | 2 +- 34 files changed, 247 insertions(+), 105 deletions(-) diff --git a/cmd/envd-sshd/main.go b/cmd/envd-sshd/main.go index 40314848b..ed47ee313 100644 --- a/cmd/envd-sshd/main.go +++ b/cmd/envd-sshd/main.go @@ -103,7 +103,7 @@ func main() { func sshServer(c *cli.Context) error { err := sshd.GetShell(c.String(flagShell)) if err != nil { - logrus.Fatal(err.Error()) + logrus.WithError(err).Fatal() } shell := c.String(flagShell) diff --git a/pkg/app/app.go b/pkg/app/app.go index 4784a2cdc..068b7ace5 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -158,7 +158,10 @@ func New() EnvdApp { internalApp.ExitErrHandler = func(context *cli.Context, err error) { if err != nil { - logrus.Fatal(err) + logrus.WithFields(logrus.Fields{ + "app": "envd", + "version": internalApp.Version, + }).WithError(err).Fatal("exit") } } diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index 670229e5f..a8294303e 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -110,7 +110,8 @@ func bootstrap(clicontext *cli.Context) error { total := len(stages) for i, stage := range stages { - logrus.Infof("[%d/%d] Bootstrap %s", i+1, total, stage.Name) + logrus.WithField("cmd", "bootstrap"). + Infof("[%d/%d] Bootstrap %s", i+1, total, stage.Name) err := stage.Func(clicontext) if err != nil { return err @@ -290,7 +291,13 @@ func sshKey(clicontext *cli.Context) error { return err } } - logrus.Debugf("New key name: %s", newPrivateKeyName) + + logrus.WithFields(logrus.Fields{ + "cmd": "bootstrap", + "stage": "sshKey", + "sshKeyPair": sshKeyPair, + }).Debugf("New key name: %s", newPrivateKeyName) + if err := sshconfig.ReplaceKeyManagedByEnvd( privatePath, newPrivateKeyName); err != nil { return err @@ -333,29 +340,36 @@ func autocomplete(clicontext *cli.Context) error { } shell := os.Getenv("SHELL") + + logger := logrus.WithFields(logrus.Fields{ + "cmd": "bootstrap", + "stage": "autocomplete", + "shell": shell, + }) + if strings.Contains(shell, "zsh") { - logrus.Infof("Install zsh autocompletion") + logger.Infof("Install zsh autocompletion") if err := ac.InsertZSHCompleteEntry(clicontext); err != nil { - logrus.Warnf("Warning: %s\n", err.Error()) + logger.WithError(err).Warn() } } else if strings.Contains(shell, "bash") { - logrus.Infof("Install bash autocompletion") + logger.Infof("Install bash autocompletion") if err := ac.InsertBashCompleteEntry(clicontext); err != nil { - logrus.Warnf("Warning: %s\n", err.Error()) + logger.WithError(err).Warn() } } else if strings.Contains(shell, "fish") { - logrus.Infof("Install fish autocompletion") + logger.Infof("Install fish autocompletion") if err := ac.InsertFishCompleteEntry(clicontext); err != nil { - logrus.Warnf("Warning: %s\n", err.Error()) + logger.WithError(err).Warn() } } else { - logrus.Infof("Install bash autocompletion (fallback from \"%s\")", shell) + logger.Infof(`Install bash autocompletion (fallback from "%s")`, shell) if err := ac.InsertBashCompleteEntry(clicontext); err != nil { - logrus.Warnf("Warning: %s\n", err.Error()) + logger.WithError(err).Warn() } } - logrus.Info("You may have to restart your shell for autocomplete to get initialized (e.g. run \"exec $SHELL\")\n") + logger.Info(`You may have to restart your shell for autocomplete to get initialized (e.g. run "exec $SHELL")\n`) return nil } @@ -370,7 +384,12 @@ func buildkit(clicontext *cli.Context) error { return errors.Wrap(err, "failed to get the current context") } - logrus.Debug("bootstrap the buildkitd container") + logger := logrus.WithFields(logrus.Fields{ + "cmd": "bootstrap", + "stage": "buildkit", + }) + + logger.Debug("bootstrap the buildkitd container") // Populate the BuildkitConfig struct config := buildkitutil.BuildkitConfig{} @@ -418,7 +437,7 @@ func buildkit(clicontext *cli.Context) error { } } defer bkClient.Close() - logrus.Infof("The buildkit is running at %s", bkClient.BuildkitdAddr()) + logger.Infof("The buildkit is running at %s", bkClient.BuildkitdAddr()) return nil } diff --git a/pkg/app/build.go b/pkg/app/build.go index 1996871b7..c42d0d7da 100644 --- a/pkg/app/build.go +++ b/pkg/app/build.go @@ -111,7 +111,10 @@ func build(clicontext *cli.Context) error { "build", telemetry.AddField("duration", time.Since(start).Seconds())) }(time.Now()) - logger := logrus.WithField("builder-options", opt) + logger := logrus.WithFields(logrus.Fields{ + "cmd": "build", + "builder-options": opt, + }) logger.Debug("starting build command") platforms := strings.Split(opt.Platform, ",") diff --git a/pkg/app/completion.go b/pkg/app/completion.go index f890ed9bc..c5249ad2a 100644 --- a/pkg/app/completion.go +++ b/pkg/app/completion.go @@ -75,7 +75,8 @@ func completion(clicontext *cli.Context) error { } for i := 0; i < n; i++ { - logrus.Infof("[%d/%d] Add completion %s", i+1, n, shellList[i]) + logrus.WithField("cmd", "completion"). + Infof("[%d/%d] Add completion %s", i+1, n, shellList[i]) switch shellList[i] { case "zsh": if err := handleCompletion(clicontext, ac.InsertZSHCompleteEntry, ac.ZshCompleteEntry); err != nil { diff --git a/pkg/app/context_create.go b/pkg/app/context_create.go index 60bd86fb2..6f541953e 100644 --- a/pkg/app/context_create.go +++ b/pkg/app/context_create.go @@ -68,6 +68,16 @@ func contextCreate(clicontext *cli.Context) error { runnerAddress := clicontext.String("runner-address") use := clicontext.Bool("use") + logger := logrus.WithFields(logrus.Fields{ + "cmd": "context create", + "name": name, + "builder": builder, + "builderAddress": builderAddress, + "runner": runner, + "runnerAddress": runnerAddress, + "use": use, + }) + c := types.Context{ Name: name, Builder: types.BuilderType(builder), @@ -82,9 +92,9 @@ func contextCreate(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to create context") } - logrus.Infof("Context %s is created", name) + logger.Infof("Context %s is created", name) if use { - logrus.Infof("Current context is now \"%s\"", name) + logger.Infof(`Current context is "%s"`, name) } return nil } diff --git a/pkg/app/context_rm.go b/pkg/app/context_rm.go index 6985a5b1d..407ea56f9 100644 --- a/pkg/app/context_rm.go +++ b/pkg/app/context_rm.go @@ -43,6 +43,7 @@ func contextRemove(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to remove context") } - logrus.Infof("Context %s is removed", name) + logrus.WithField("cmd", "context remove"). + Infof("Context %s is removed", name) return nil } diff --git a/pkg/app/context_use.go b/pkg/app/context_use.go index ba9975520..5314c05a2 100644 --- a/pkg/app/context_use.go +++ b/pkg/app/context_use.go @@ -43,6 +43,7 @@ func contextUse(clicontext *cli.Context) error { if err != nil { return errors.Wrapf(err, "failed to use the specified context %s", name) } - logrus.Infof("Current context is now \"%s\"", name) + logrus.WithField("cmd", "context use"). + Infof(`Current context is "%s"`, name) return nil } diff --git a/pkg/app/debug_llb.go b/pkg/app/debug_llb.go index e10412f34..42fb25142 100644 --- a/pkg/app/debug_llb.go +++ b/pkg/app/debug_llb.go @@ -77,6 +77,7 @@ func debugLLB(clicontext *cli.Context) error { } logger := logrus.WithFields(logrus.Fields{ + "cmd": "debug llb", "build-context": opt.BuildContextDir, "build-file": opt.ManifestFilePath, "config": opt.ConfigFilePath, diff --git a/pkg/app/destroy.go b/pkg/app/destroy.go index 67b7debfc..3199dc6ac 100644 --- a/pkg/app/destroy.go +++ b/pkg/app/destroy.go @@ -82,6 +82,12 @@ func destroy(clicontext *cli.Context) error { return errors.New("Cannot specify --path and --name at the same time.") } + logger := logrus.WithFields(logrus.Fields{ + "cmd": "destroy", + "path": path, + "name": name, + }) + var ctrName string if name != "" { ctrName = name @@ -127,11 +133,12 @@ func destroy(clicontext *cli.Context) error { if ctrName, err := envdEngine.Destroy(clicontext.Context, ctrName); err != nil { return errors.Wrapf(err, "failed to destroy the environment: %s", ctrName) } else if ctrName != "" { - logrus.Infof("environment(%s) is destroyed", ctrName) + logger.Infof("environment(%s) is destroyed", ctrName) } if err = sshconfig.RemoveEntry(ctrName); err != nil { - logrus.Infof("failed to remove entry %s from your SSH config file: %s", ctrName, err) + logger.WithError(err). + Infof("failed to remove entry %s from your SSH config file", ctrName) return errors.Wrap(err, "failed to remove entry from your SSH config file") } diff --git a/pkg/app/exec.go b/pkg/app/exec.go index f11b0abe2..53bc6e2e1 100644 --- a/pkg/app/exec.go +++ b/pkg/app/exec.go @@ -111,7 +111,14 @@ func exec(clicontext *cli.Context) error { return errors.Wrapf(err, "failed to get environment: %s", name) } - logrus.Debugf("runtime commands: %s", rg.RuntimeCommands) + logrus.WithFields(logrus.Fields{ + "cmd": "exec", + "name": name, + "command": command, + "rawCommand": rawCommand, + "path": path, + }).Debugf("runtime commands: %s", rg.RuntimeCommands) + cmd, ok := rg.RuntimeCommands[command] if !ok { return errors.Newf("command %s does not exist", command) diff --git a/pkg/app/image_remove.go b/pkg/app/image_remove.go index 6c72ab1f7..897b6931b 100644 --- a/pkg/app/image_remove.go +++ b/pkg/app/image_remove.go @@ -46,12 +46,19 @@ var CommandRemoveImage = &cli.Command{ func removeImage(clicontext *cli.Context) error { imageName := clicontext.String("image") + tag := clicontext.String("tag") + + logger := logrus.WithFields(logrus.Fields{ + "cmd": "images remove", + "imageName": imageName, + "tag": tag, + }) + if imageName == "" { return errors.New("image name is required, find images by `envd images list`") } - tag := clicontext.String("tag") if tag == "" { - logrus.Debug("tag not specified, using default tag: `dev`") + logger.Debug("tag not specified, using default tag: `dev`") tag = "dev" } imageNameWithTag := fmt.Sprintf("%s:%s", imageName, tag) @@ -63,6 +70,6 @@ func removeImage(clicontext *cli.Context) error { if err := dockerClient.RemoveImage(clicontext.Context, imageNameWithTag); err != nil { return errors.Errorf("remove image %s failed: %w", imageNameWithTag, err) } - logrus.Infof("image(%s) has removed", imageNameWithTag) + logger.Info("image has been removed") return nil } diff --git a/pkg/app/login.go b/pkg/app/login.go index 4ac8c55dc..8b35b973a 100644 --- a/pkg/app/login.go +++ b/pkg/app/login.go @@ -60,8 +60,11 @@ func login(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to get current context") } + + logger := logrus.WithField("cmd", "login") + if c.Runner == types.RunnerTypeDocker { - logrus.Warn("login is not needed for docker runner, skipping") + logger.Warn("login is not needed for docker runner, skipping") return nil } hostAddr := c.RunnerAddress @@ -84,13 +87,13 @@ func login(clicontext *cli.Context) error { auth := true if pwd == "" { auth = false - logrus.Warn("The password is nil, skip the authentication. Please make sure that the server is running in no-auth mode") + logger.Warn("The password is nil, skip the authentication. Please make sure that the server is running in no-auth mode") if loginName == "" { loginName, err = generateLoginName() if err != nil { return errors.Wrap(err, "failed to generate the login name") } - logrus.Warnf("The login name is nil, use `%s` as the login name", loginName) + logger.Warnf("The login name is nil, use `%s` as the login name", loginName) } } req := servertypes.AuthNRequest{ @@ -98,7 +101,7 @@ func login(clicontext *cli.Context) error { Password: pwd, } - logger := logrus.WithFields(logrus.Fields{ + logger = logger.WithFields(logrus.Fields{ "login_name": loginName, "auth-enabled": auth, }) @@ -160,7 +163,7 @@ func login(clicontext *cli.Context) error { } } - logrus.WithField("key", keyResp.Name).Debug("key is added successfully") + logger.WithField("key", keyResp.Name).Debug("key is added successfully") if err := home.GetManager().AuthCreate(types.AuthConfig{ Name: resp.LoginName, JWTToken: resp.IdentityToken, diff --git a/pkg/app/pause.go b/pkg/app/pause.go index c2c640991..4fd7c8ec3 100644 --- a/pkg/app/pause.go +++ b/pkg/app/pause.go @@ -60,7 +60,7 @@ func pause(clicontext *cli.Context) error { return errors.Wrap(err, "failed to pause the environment") } if name != "" { - logrus.Infof("%s is paused", name) + logrus.WithField("cmd", "pause").Infof("%s is paused", name) } return nil } diff --git a/pkg/app/resume.go b/pkg/app/resume.go index 96c811e4f..e6bde139a 100644 --- a/pkg/app/resume.go +++ b/pkg/app/resume.go @@ -60,7 +60,7 @@ func resume(clicontext *cli.Context) error { return errors.Wrap(err, "failed to pause the environment") } if name != "" { - logrus.Infof("%s is resumed", name) + logrus.WithField("cmd", "resume").Infof("%s is resumed", name) } return nil } diff --git a/pkg/app/run.go b/pkg/app/run.go index 0283ceaee..0fbded4c1 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -170,9 +170,15 @@ func run(clicontext *cli.Context) error { return err } - logrus.Debugf("container %s is running", res.Name) + logger := logrus.WithFields(logrus.Fields{ + "cmd": "run", + "StartOptions": opt, + "StartResult": res, + }) + + logger.Debugf("container %s is running", res.Name) - logrus.Debugf("add entry %s to SSH config.", res.Name) + logger.Debugf("add entry %s to SSH config.", res.Name) hostname, err := c.GetSSHHostname(opt.SshdHost) if err != nil { return errors.Wrap(err, "failed to get the ssh hostname") @@ -197,7 +203,8 @@ func run(clicontext *cli.Context) error { User: username, } if err = sshconfig.AddEntry(eo); err != nil { - logrus.Infof("failed to add entry %s to your SSH config file: %s", res.Name, err) + logger.WithError(err). + Infof("failed to add entry %s to your SSH config file", res.Name) return errors.Wrap(err, "failed to add entry to your SSH config file") } @@ -230,7 +237,7 @@ func run(clicontext *cli.Context) error { } localAddress := fmt.Sprintf("%s:%d", "localhost", localPort) remoteAddress := fmt.Sprintf("%s:%d", "localhost", p.Port) - logrus.Infof("service \"%s\" is listening at %s\n", p.Name, localAddress) + logger.Infof(`service "%s" is listening at %s\n`, p.Name, localAddress) go func() { if err := sshClient.LocalForward(localAddress, remoteAddress); err != nil { outputChannel <- errors.Wrap(err, "failed to forward to local port") @@ -289,6 +296,11 @@ func startSyncthing(name string) (*syncthing.Syncthing, *syncthing.Syncthing, er } projectName := filepath.Base(cwd) + logger := logrus.WithFields(logrus.Fields{ + "cwd": cwd, + "projectName": projectName, + }) + localSyncthing, err := syncthing.InitializeLocalSyncthing(name) if err != nil { return nil, nil, errors.Wrap(err, "failed to initialize local syncthing") @@ -298,13 +310,13 @@ func startSyncthing(name string) (*syncthing.Syncthing, *syncthing.Syncthing, er if err != nil { return nil, nil, errors.Wrap(err, "failed to initialize remote syncthing") } - logrus.Debug("Remote syncthing initialized") + logger.Debug("Remote syncthing initialized") err = syncthing.ConnectDevices(localSyncthing, remoteSyncthing) if err != nil { return nil, nil, errors.Wrap(err, "failed to connect devices") } - logrus.Debug("Syncthing devices connected") + logger.Debug("Syncthing devices connected") err = syncthing.SyncFolder(localSyncthing, remoteSyncthing, cwd, fmt.Sprintf("%s/%s", fileutil.EnvdHomeDir(), projectName)) if err != nil { diff --git a/pkg/app/telemetry/reporter.go b/pkg/app/telemetry/reporter.go index 5984517e2..0ed7cf81a 100644 --- a/pkg/app/telemetry/reporter.go +++ b/pkg/app/telemetry/reporter.go @@ -130,9 +130,10 @@ func (r *defaultReporter) dumpTelemetry() error { } func (r *defaultReporter) Identify() { - logrus.WithField("UID", r.UID).Debug("telemetry initialization") + logger := logrus.WithField("UID", r.UID) + logger.Debug("telemetry initialization") if r.enabled { - logrus.Debug("sending telemetry") + logger.Debug("sending telemetry") v := version.GetVersion() if err := r.client.Enqueue(segmentio.Identify{ UserId: r.UID, @@ -149,7 +150,7 @@ func (r *defaultReporter) Identify() { Timestamp: time.Now(), Traits: segmentio.NewTraits(), }); err != nil { - logrus.Debug("telemetry failed") + logger.Debug("telemetry failed") return } } @@ -163,10 +164,11 @@ func AddField(name string, value interface{}) TelemetryField { func (r *defaultReporter) Telemetry(command string, fields ...TelemetryField) { if r.enabled { - logrus.WithFields(logrus.Fields{ + logger := logrus.WithFields(logrus.Fields{ "UID": r.UID, "command": command, - }).Debug("sending telemetry track event") + }) + logger.Debug("sending telemetry track event") t := segmentio.Track{ UserId: r.UID, Event: command, @@ -176,7 +178,7 @@ func (r *defaultReporter) Telemetry(command string, fields ...TelemetryField) { field(&t.Properties) } if err := r.client.Enqueue(t); err != nil { - logrus.Debug(err) + logger.Debug(err) } // make sure the msg can be sent out r.client.Close() diff --git a/pkg/app/up.go b/pkg/app/up.go index 1f7b458b5..ef0f6cbcb 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -182,6 +182,7 @@ func up(clicontext *cli.Context) error { ctr := filepath.Base(buildOpt.BuildContextDir) detach := clicontext.Bool("detach") logger := logrus.WithFields(logrus.Fields{ + "cmd": "up", "builder-options": buildOpt, "container-name": ctr, "detach": detach, @@ -205,7 +206,7 @@ func up(clicontext *cli.Context) error { return err } - logrus.Debug("start running the environment") + logger.Debug("start running the environment") // Do not attach GPU if the flag is set. disableGPU := clicontext.Bool("no-gpu") var defaultGPU bool @@ -271,9 +272,9 @@ func up(clicontext *cli.Context) error { if err != nil { return errors.Wrap(err, "failed to start the envd environment") } - logrus.Debugf("container %s is running", res.Name) + logger.Debugf("container %s is running", res.Name) - logrus.Debugf("add entry %s to SSH config.", ctr) + logger.Debugf("add entry %s to SSH config.", ctr) hostname, err := c.GetSSHHostname(startOptions.SshdHost) if err != nil { return errors.Wrap(err, "failed to get the ssh hostname") @@ -285,7 +286,8 @@ func up(clicontext *cli.Context) error { return errors.Wrap(err, "failed to get the ssh entry") } if err = sshconfig.AddEntry(eo); err != nil { - logrus.Infof("failed to add entry %s to your SSH config file: %s", ctr, err) + logger.WithError(err). + Infof("failed to add entry %s to your SSH config file", ctr) return errors.Wrap(err, "failed to add entry to your SSH config file") } telemetry.GetReporter().Telemetry( diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 7b16464aa..54ec1ab31 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -279,7 +279,7 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err b.logger.Debug("loading image to docker host") if err := dockerClient.Load(ctx, pipeR, true); err != nil { err = errors.Wrap(err, "failed to load docker image") - b.logger.Error(err) + b.logger.WithError(err).Error() return err } b.logger.Debug("loaded docker image successfully") @@ -304,12 +304,12 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err client, err := docker.NewClient(ctx) if err != nil { err = errors.Wrap(err, "failed to init docker client") - b.logger.Error(err) + b.logger.WithError(err).Error() return err } if err = client.PushImage(ctx, entry.Attrs["name"], b.Platform); err != nil { err = errors.Wrap(err, "failed to push image") - b.logger.Error(err) + b.logger.WithError(err).Error() return err } b.logger.Debug("pushed image:", entry.Attrs["name"]) diff --git a/pkg/builder/dep_check.go b/pkg/builder/dep_check.go index 490532f61..145ba3835 100644 --- a/pkg/builder/dep_check.go +++ b/pkg/builder/dep_check.go @@ -31,7 +31,7 @@ func (b generalBuilder) checkIfNeedBuild(ctx context.Context) bool { depsFiles = b.GetDepsFilesHandler(depsFiles) isUpdated, err := b.checkDepsFileUpdate(ctx, b.Tag, b.ManifestFilePath, depsFiles) if err != nil { - b.logger.Debugf("failed to check manifest update: %s", err) + b.logger.WithError(err).Debug("failed to check manifest update") } if !isUpdated { b.logger.Infof("manifest is not updated, skip building") diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index a54c4d062..ec1d65537 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -198,7 +198,7 @@ func (c generalClient) waitUntilConnected( case <-time.After(interval): connected, err := c.connected(ctxTimeout) if err != nil { - logrus.Debugf("failed to connect to buildkitd: %s", err.Error()) + c.logger.WithError(err).Debug("failed to connect to buildkitd") continue } if !connected { diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 2d134581b..63dfca638 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -98,7 +98,7 @@ func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name string, b "--entrypoint", "sh", tag, "-c", buildkitdCmd) if err != nil { - logrus.Error("can not run buildkitd", out, err) + logger.WithError(err).Error("can not run buildkitd", out) return "", errors.Wrap(err, "running buildkitd") } } @@ -185,7 +185,7 @@ func (nc *nerdctlClient) containerInspect(ctx context.Context, tag string) (*typ cs := []types.ContainerJSON{} err = json.Unmarshal([]byte(out), &cs) if err != nil { - logrus.Error(cs, err) + logrus.WithError(err).Error(cs) return nil, err } diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index b8629a44f..18386203c 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -484,7 +484,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes if len(so.NumMem) > 0 { mem, err := dockerutils.RAMInBytes(so.NumMem) if err != nil { - logger.Infof("parse `memory` error: %v, ignore this argument", err) + logger.WithError(err).Info("parse `memory` error, ignore this argument") } else { hostConfig.Memory = mem } @@ -590,7 +590,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes errCause := errors.UnwrapAll(err) // Hack to check if the port is already allocated. if strings.Contains(errCause.Error(), "port is already allocated") { - logrus.Debugf("failed to allocate the port: %s", err) + logger.WithError(err).Debug("failed to allocate the port") return nil, errors.New("port is already allocated in the host") } return nil, errors.Wrap(err, "failed to run the container") @@ -653,7 +653,7 @@ func (e dockerEngine) Destroy(ctx context.Context, name string) (string, error) if _, err := e.ImageRemove(ctx, ctr.Image, dockertypes.ImageRemoveOptions{}); err != nil { return "", errors.Errorf("remove image %s failed: %w", ctr.Image, err) } - logrus.Infof("image(%s) is destroyed", ctr.Image) + logger.Infof("image(%s) is destroyed", ctr.Image) return name, nil } diff --git a/pkg/envd/envdserver.go b/pkg/envd/envdserver.go index 00417fe75..794ed40b2 100644 --- a/pkg/envd/envdserver.go +++ b/pkg/envd/envdserver.go @@ -185,7 +185,7 @@ func (e envdServerEngine) Attach(name, iface, privateKeyPath string, startResult } localAddress := fmt.Sprintf("%s:%d", "localhost", localPort) remoteAddress := fmt.Sprintf("%s:%d", "localhost", p.Port) - logrus.Infof("service \"%s\" is listening at %s\n", p.Name, localAddress) + logrus.Infof(`service "%s" is listening at %s\n`, p.Name, localAddress) go func() { if err := sshClient.LocalForward(localAddress, remoteAddress); err != nil { outputChannel <- errors.Wrap(err, "failed to forward to local port") diff --git a/pkg/metrics/docker_collector.go b/pkg/metrics/docker_collector.go index 09492a54c..8fd523980 100644 --- a/pkg/metrics/docker_collector.go +++ b/pkg/metrics/docker_collector.go @@ -55,7 +55,8 @@ func (c *dockerCollector) Watch(ctx context.Context, cid string) chan Metrics { defer close(stats) err := c.client.Stats(ctx, cid, stats, c.done) if err != nil { - logrus.Error(err) + logrus.WithField("cid", cid). + WithError(err).Error("error occurred in dockerCollecter.Watch") } c.running = false }() diff --git a/pkg/remote/sshd/sshd.go b/pkg/remote/sshd/sshd.go index 9aae40d8e..119ee8900 100644 --- a/pkg/remote/sshd/sshd.go +++ b/pkg/remote/sshd/sshd.go @@ -181,7 +181,7 @@ func (srv *Server) connectionHandler(s ssh.Session) { err := s.Exit(0) if err != nil { - logger.Warningln("exit session with error:", err) + logger.WithError(err).Warnln("exit session with error") } return } @@ -194,7 +194,7 @@ func (srv *Server) connectionHandler(s ssh.Session) { err := s.Exit(0) if err != nil { - logger.Warningln("exit session with error:", err) + logger.WithError(err).Warnln("exit session with error") } } diff --git a/pkg/ssh/config/ssh_config.go b/pkg/ssh/config/ssh_config.go index ba1cf0b2b..f296e75e8 100644 --- a/pkg/ssh/config/ssh_config.go +++ b/pkg/ssh/config/ssh_config.go @@ -232,7 +232,8 @@ func (config *sshConfig) writeTo(w io.Writer) error { func (config *sshConfig) writeToFilepath(p string) error { sshDir := filepath.Dir(p) if err := os.MkdirAll(sshDir, 0700); err != nil { - logrus.Infof("failed to create SSH directory %s: %s", sshDir, err) + logrus.WithError(err). + Infof("failed to create SSH directory %s", sshDir) } stat, err := os.Stat(p) @@ -477,7 +478,7 @@ func save(cfg *sshConfig, path string) error { func getSSHConfigPath() string { dirname, err := os.UserHomeDir() if err != nil { - logrus.Fatal(err) + logrus.WithError(err).Fatal() } return filepath.Join(dirname, ".ssh", "config") } diff --git a/pkg/ssh/copy.go b/pkg/ssh/copy.go index e4f6cd9c8..afd0df2f5 100644 --- a/pkg/ssh/copy.go +++ b/pkg/ssh/copy.go @@ -49,13 +49,13 @@ func (c *Copier) Copy() { nw, ew := c.Remote.Write(buf[write:nr]) write += nw if ew != nil { - logrus.Debugf("write to remote terminal error: %s", ew.Error()) + logrus.WithError(ew).Debug("write to remote terminal error") <-t.C continue } } if er != nil { - logrus.Debugf("read from local to remote terminal error: %s", er.Error()) + logrus.WithError(er).Debug("read from local to remote terminal error") return } } diff --git a/pkg/ssh/ssh.go b/pkg/ssh/ssh.go index 071c2382a..f1732fc10 100644 --- a/pkg/ssh/ssh.go +++ b/pkg/ssh/ssh.go @@ -85,13 +85,14 @@ type generalClient struct { } func NewClient(opt Options) (Client, error) { - logrus.WithFields(logrus.Fields{ + logger := logrus.WithFields(logrus.Fields{ "user": opt.User, "port": opt.Port, "server": opt.Server, "agent-forwarding": opt.AgentForwarding, "auth": opt.Auth, - }).Debug("ssh to the environment") + }) + logger.Debug("ssh to the environment") config := &ssh.ClientConfig{ User: opt.User, @@ -146,7 +147,7 @@ func NewClient(opt Options) (Client, error) { return nil, errors.Wrap(err, "forwarding agent to client failed") } } else { - logrus.Warn("SSH Agent Forwarding is disabled. This will have no impact on your normal use if you do not use the ssh key on the host.") + logger.Warn("SSH Agent Forwarding is disabled. This will have no impact on your normal use if you do not use the ssh key on the host.") } } @@ -193,6 +194,14 @@ func (c generalClient) Attach() error { } } + logger := logrus.WithFields(logrus.Fields{ + "user": c.opt.User, + "port": c.opt.Port, + "server": c.opt.Server, + "agent-forwarding": c.opt.AgentForwarding, + "auth": c.opt.Auth, + }) + modes := ssh.TerminalModes{ ssh.ECHO: 0, // Disable echoing ssh.ECHOCTL: 0, // Don't print control chars @@ -206,15 +215,15 @@ func (c generalClient) Attach() error { var ok bool if termFD, ok = isTerminal(os.Stdin); ok { width, height, err = term.GetSize(int(os.Stdout.Fd())) - logrus.Debugf("terminal width %d height %d", width, height) + logger.Debugf("terminal width %d height %d", width, height) if err != nil { - logrus.Debugf("request for terminal size failed: %s", err) + logger.WithError(err).Debug("request for terminal size failed") } } state, err := term.MakeRaw(termFD) if err != nil { - logrus.Debugf("request for raw terminal failed: %s", err) + logger.WithError(err).Debug("request for raw terminal failed") } defer func() { @@ -223,10 +232,10 @@ func (c generalClient) Attach() error { } if err := term.Restore(termFD, state); err != nil { - logrus.Debugf("failed to restore terminal: %s", err) + logger.WithError(err).Debugf("failed to restore terminal") } - logrus.Debugf("terminal restored") + logger.Debugf("terminal restored") }() if err := session.RequestPty("xterm-256color", height, width, modes); err != nil { @@ -237,12 +246,12 @@ func (c generalClient) Attach() error { session.Stderr = os.Stderr session.Stdin = os.Stdin - logrus.Debug("starting shell") + logger.Debug("starting shell") err = session.Shell() if err != nil { return errors.Wrap(err, "starting shell failed") } - logrus.Debug("waiting for shell to exit") + logger.Debug("waiting for shell to exit") if err = session.Wait(); err != nil { var ee *ssh.ExitError if ok := errors.As(err, &ee); ok { @@ -250,18 +259,18 @@ func (c generalClient) Attach() error { case 130: return nil case 137: - logrus.Warn(`Insufficient memory.`) + logger.Warn(`Insufficient memory.`) } } var emr *ssh.ExitMissingError if ok := errors.As(err, &emr); ok { - logrus.Debugf("exit status missing: %s", emr) + logger.WithError(emr).Debug("exit status missing") return nil } return errors.Wrap(err, "waiting for session failed") } - logrus.Debug("shell exited") + logger.Debug("shell exited") return nil } @@ -271,7 +280,9 @@ func (c generalClient) LocalForward(localAddress, targetAddress string) error { return errors.Wrap(err, "net.Listen failed") } - logrus.Debug("begin to local forward " + localAddress + " to " + targetAddress) + logger := logrus.WithField("type", "local") + + logger.Debugf("begin to forward %s to %s", localAddress, targetAddress) for { localCon, err := localListener.Accept() if err != nil { @@ -287,7 +298,7 @@ func (c generalClient) LocalForward(localAddress, targetAddress string) error { go func() { _, err = io.Copy(sshConn, localCon) if err != nil { - logrus.Debugf("io.Copy failed: %v", err) + logger.WithError(err).Debug("io.Copy failed") } }() @@ -295,7 +306,7 @@ func (c generalClient) LocalForward(localAddress, targetAddress string) error { go func() { _, err = io.Copy(localCon, sshConn) if err != nil { - logrus.Debugf("io.Copy failed: %v", err) + logger.WithError(err).Debug("io.Copy failed") } }() } @@ -307,7 +318,9 @@ func (c generalClient) RemoteForward(remoteAddress, targetAddress string) error return errors.Wrap(err, "cli.Listen failed") } - logrus.Debug("begin to remote forward " + remoteAddress + " to " + targetAddress) + logger := logrus.WithField("type", "remote") + + logger.Debugf("begin to forward %s to %s", remoteAddress, targetAddress) for { sshCon, err := sshListener.Accept() if err != nil { @@ -323,7 +336,7 @@ func (c generalClient) RemoteForward(remoteAddress, targetAddress string) error go func() { _, err = io.Copy(targetCon, sshCon) if err != nil { - logrus.Debugf("io.Copy failed: %v", err) + logger.WithError(err).Debug("io.Copy failed") } }() @@ -331,7 +344,7 @@ func (c generalClient) RemoteForward(remoteAddress, targetAddress string) error go func() { _, err = io.Copy(sshCon, targetCon) if err != nil { - logrus.Debugf("io.Copy failed: %v", err) + logger.WithError(err).Debug("io.Copy failed") } }() } diff --git a/pkg/syncthing/client.go b/pkg/syncthing/client.go index 632994c6b..982b59c46 100644 --- a/pkg/syncthing/client.go +++ b/pkg/syncthing/client.go @@ -52,7 +52,11 @@ func (s *Syncthing) NewClient() *Client { // Makes API calls to the syncthing instance's rest api func (c *Client) SendRequest(method string, url string, params map[string]string, body []byte) ([]byte, error) { - logrus.Debug("calling syncthing API: ", url) + logrus.WithFields(logrus.Fields{ + "method": method, + "url": url, + "params": params, + }).Debug("calling syncthing API") // TODO: can implement retry logic var urlPath = c.BasePath + url diff --git a/pkg/syncthing/config.go b/pkg/syncthing/config.go index 85a73e9b6..adb891f73 100644 --- a/pkg/syncthing/config.go +++ b/pkg/syncthing/config.go @@ -90,7 +90,8 @@ func (s *Syncthing) WaitForConfigApply(timeout time.Duration) error { start := time.Now() for { if time.Since(start) > timeout { - logrus.Debug("Timeout reached, config not applied") + logrus.WithField("timeout", timeout). + Debug("Timeout reached, config not applied") return fmt.Errorf("timed out waiting for configurations to apply") } diff --git a/pkg/syncthing/device.go b/pkg/syncthing/device.go index 1a0e59c62..b81005827 100644 --- a/pkg/syncthing/device.go +++ b/pkg/syncthing/device.go @@ -22,20 +22,26 @@ import ( ) func ConnectDevices(s1 *Syncthing, s2 *Syncthing) error { - logrus.Debug(fmt.Sprintf("Connecting syncthings %s and %s", s1.Name, s2.Name)) + logger := logrus.WithFields(logrus.Fields{ + "s1": s1.Name, + "s2": s2.Name, + "config-s1": s1.Config, + "config-s2": s2.Config, + }) + logger.Debug("Connecting syncthings") var err error connectedDevices := append(s1.Config.Devices, s2.Config.Devices...) s1.Config.Devices = connectedDevices s2.Config.Devices = connectedDevices - logrus.Debug("Adding device config for: ", s1.Name) + logger.Debug("Adding device config for: ", s1.Name) err = s1.ApplyConfig() if err != nil { return err } - logrus.Debug("Adding device config for: ", s2.Name) + logger.Debug("Adding device config for: ", s2.Name) err = s2.ApplyConfig() if err != nil { return err diff --git a/pkg/syncthing/syncthing.go b/pkg/syncthing/syncthing.go index 7016ad5c3..3d126088f 100644 --- a/pkg/syncthing/syncthing.go +++ b/pkg/syncthing/syncthing.go @@ -50,6 +50,14 @@ func InitializeRemoteSyncthing() (*Syncthing, error) { ApiKey: DefaultApiKey, } + logger := logrus.WithFields(logrus.Fields{ + "name": s.Name, + "port": s.Port, + "homedir": s.HomeDirectory, + "apikey": s.ApiKey, + "config": s.Config, + }) + s.Client = s.NewClient() err := s.WaitForStartup(15 * time.Second) @@ -62,7 +70,7 @@ func InitializeRemoteSyncthing() (*Syncthing, error) { return nil, fmt.Errorf("failed to pull latest config: %w", err) } - logrus.Debug("Remote syncthing connected") + logger.Debug("Remote syncthing connected") err = s.SetDeviceAddress(DefaultRemoteDeviceAddress) if err != nil { @@ -96,9 +104,17 @@ func InitializeLocalSyncthing(name string) (*Syncthing, error) { Port: ParsePortFromAddress(initConfig.GUI.Address()), } + logger := logrus.WithFields(logrus.Fields{ + "name": s.Name, + "port": s.Port, + "homedir": s.HomeDirectory, + "apikey": s.ApiKey, + "config": s.Config, + }) + s.Client = s.NewClient() - logrus.Debug("Port for local syncthing is: ", initConfig.GUI.Address()) + logger.Debugf("Port for local syncthing is: %s", initConfig.GUI.Address()) if err != nil { return nil, err @@ -142,7 +158,15 @@ func (s *Syncthing) StartLocalSyncthing() error { } } - logrus.Debug("Starting local syncthing...") + logger := logrus.WithFields(logrus.Fields{ + "name": s.Name, + "port": s.Port, + "homedir": s.HomeDirectory, + "apikey": s.ApiKey, + "config": s.Config, + }) + + logger.Debug("Starting local syncthing...") cmd := exec.Command(GetSyncthingBinPath(), "-no-restart", "-no-browser", "-home", s.HomeDirectory) err := cmd.Start() @@ -150,7 +174,7 @@ func (s *Syncthing) StartLocalSyncthing() error { return fmt.Errorf("failed to run syncthing executable: %w", err) } s.Cmd = cmd - logrus.Debug("Local syncthing started!") + logger.Debug("Local syncthing started!") err = s.WaitForStartup(10 * time.Second) if err != nil { @@ -166,12 +190,12 @@ func (s *Syncthing) StartLocalSyncthing() error { err := cmd.Process.Signal(os.Interrupt) if err != nil { - logrus.Errorf("Failed to send SIGINT to syncthing: %s", err) + logger.WithError(err).Error("Failed to send SIGINT to syncthing") } err = cmd.Wait() if err != nil { - logrus.Errorf("Failed to wait for syncthing to exit: %s", err) + logger.WithError(err).Error("Failed to wait for syncthing to exit") } os.Exit(0) @@ -183,7 +207,7 @@ func (s *Syncthing) StartLocalSyncthing() error { func (s *Syncthing) Ping() (bool, error) { _, err := s.Client.SendRequest(GET, "/rest/system/ping", nil, nil) if err != nil { - logrus.Debug("Failed to ping syncthing: ", err) + logrus.WithError(err).Debug("Failed to ping syncthing") return false, fmt.Errorf("failed to ping syncthing: %w", err) } @@ -194,7 +218,13 @@ func (s *Syncthing) WaitForStartup(timeout time.Duration) error { start := time.Now() for { if time.Since(start) > timeout { - logrus.Debugf("Timeout reached for syncthing: %s", s.Name) + logrus.WithFields(logrus.Fields{ + "name": s.Name, + "port": s.Port, + "homedir": s.HomeDirectory, + "apikey": s.ApiKey, + "config": s.Config, + }).Debugf("Timeout reached for syncthing") return fmt.Errorf("timed out waiting for syncthing to start") } if ok, _ := s.Ping(); ok { @@ -205,22 +235,29 @@ func (s *Syncthing) WaitForStartup(timeout time.Duration) error { } func (s *Syncthing) StopLocalSyncthing() { + logger := logrus.WithFields(logrus.Fields{ + "name": s.Name, + "port": s.Port, + "homedir": s.HomeDirectory, + "apikey": s.ApiKey, + "config": s.Config, + }) if s.Cmd == nil { - logrus.Error("syncthing is not running") + logger.Error("syncthing is not running") } err := s.Cmd.Process.Signal(syscall.SIGINT) if err != nil { - logrus.Errorf("failed to kill syncthing process: %s", err) + logger.WithError(err).Error("failed to kill syncthing process") } _, err = s.Cmd.Process.Wait() if err != nil { - logrus.Errorf("failed to kill syncthing process: %s", err) + logger.WithError(err).Error("failed to kill syncthing process") } if err = CleanLocalConfig(s.Name); err != nil { - logrus.Errorf("failed to clean local syncthing config: %s", err) + logger.WithError(err).Error("failed to clean local syncthing config") } } diff --git a/pkg/util/osutil/wsl.go b/pkg/util/osutil/wsl.go index e029a4a2f..8ec897af0 100644 --- a/pkg/util/osutil/wsl.go +++ b/pkg/util/osutil/wsl.go @@ -34,7 +34,7 @@ func IsWsl() bool { cmd := exec.Command("cat", "/proc/version") output, err := cmd.Output() if err != nil { - logrus.Debugf("Error when check whether sys is WSL: %v", err) + logrus.WithError(err).Error("Error when check whether sys is WSL") return false } From 242cd5887780f96690c7e762237b3b5137e08e23 Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:46:53 +0800 Subject: [PATCH 268/355] docs: add Electronic-Waste as a contributor for code (#1822) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 13 ++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 911b70ada..c7d6a3cd4 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -619,6 +619,15 @@ "contributions": [ "code" ] + }, + { + "login": "Electronic-Waste", + "name": "Shao Wang", + "avatar_url": "https://avatars.githubusercontent.com/u/77665902?v=4", + "profile": "http://blog.electronicwaste.cn", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 71cf7f8d3..0aa00be56 100644 --- a/README.md +++ b/README.md @@ -326,53 +326,56 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d <td align="center" valign="top" width="14.28%"><a href="https://github.com/lilylee1874"><img src="https://avatars.githubusercontent.com/u/52693877?v=4?s=70" width="70px;" alt="Nino"/><br /><sub><b>Nino</b></sub></a><br /><a href="#design-lilylee1874" title="Design">🎨</a> <a href="https://github.com/tensorchord/envd/commits?author=lilylee1874" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://phillipw.info"><img src="https://avatars.githubusercontent.com/u/34707116?v=4?s=70" width="70px;" alt="Pengyu Wang"/><br /><sub><b>Pengyu Wang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=cswpy" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Sepush"><img src="https://avatars.githubusercontent.com/u/39197136?v=4?s=70" width="70px;" alt="Sepush"/><br /><sub><b>Sepush</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=sepush" title="Documentation">📖</a></td> + <td align="center" valign="top" width="14.28%"><a href="http://blog.electronicwaste.cn"><img src="https://avatars.githubusercontent.com/u/77665902?v=4?s=70" width="70px;" alt="Shao Wang"/><br /><sub><b>Shao Wang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=Electronic-Waste" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://blog.thrimbda.com/"><img src="https://avatars.githubusercontent.com/u/15231162?v=4?s=70" width="70px;" alt="Siyuan Wang"/><br /><sub><b>Siyuan Wang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=Thrimbda" title="Code">💻</a> <a href="#infra-Thrimbda" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-Thrimbda" title="Maintenance">🚧</a></td> <td align="center" valign="top" width="14.28%"><a href="http://suyan.moe"><img src="https://avatars.githubusercontent.com/u/24221472?v=4?s=70" width="70px;" alt="Suyan"/><br /><sub><b>Suyan</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=suyanhanx" title="Documentation">📖</a></td> - <td align="center" valign="top" width="14.28%"><a href="http://myfra.vercel.app"><img src="https://avatars.githubusercontent.com/u/60420319?v=4?s=70" width="70px;" alt="To My"/><br /><sub><b>To My</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=MyFRA" title="Documentation">📖</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="http://myfra.vercel.app"><img src="https://avatars.githubusercontent.com/u/60420319?v=4?s=70" width="70px;" alt="To My"/><br /><sub><b>To My</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=MyFRA" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://www.iam.rw"><img src="https://avatars.githubusercontent.com/u/29533246?v=4?s=70" width="70px;" alt="Tumushimire Yves"/><br /><sub><b>Tumushimire Yves</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=yvestumushimire" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://page.codespaper.com"><img src="https://avatars.githubusercontent.com/u/3764335?v=4?s=70" width="70px;" alt="Wei Zhang"/><br /><sub><b>Wei Zhang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=zwpaper" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://weixiao-huang.github.io"><img src="https://avatars.githubusercontent.com/u/8834733?v=4?s=70" width="70px;" alt="Weixiao Huang"/><br /><sub><b>Weixiao Huang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=weixiao-huang" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://www.hawkingrei.com/"><img src="https://avatars.githubusercontent.com/u/3427324?v=4?s=70" width="70px;" alt="Weizhen Wang"/><br /><sub><b>Weizhen Wang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=hawkingrei" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://blog.xuruowei.com"><img src="https://avatars.githubusercontent.com/u/18398013?v=4?s=70" width="70px;" alt="XRW"/><br /><sub><b>XRW</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=Xuruowei" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/jiayouxujin"><img src="https://avatars.githubusercontent.com/u/29749249?v=4?s=70" width="70px;" alt="Xu Jin"/><br /><sub><b>Xu Jin</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=jiayouxujin" title="Code">💻</a></td> - <td align="center" valign="top" width="14.28%"><a href="https://xuanwo.io/"><img src="https://avatars.githubusercontent.com/u/5351546?v=4?s=70" width="70px;" alt="Xuanwo"/><br /><sub><b>Xuanwo</b></sub></a><br /><a href="#question-Xuanwo" title="Answering Questions">💬</a> <a href="#design-Xuanwo" title="Design">🎨</a> <a href="#ideas-Xuanwo" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/tensorchord/envd/pulls?q=is%3Apr+reviewed-by%3AXuanwo" title="Reviewed Pull Requests">👀</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="https://xuanwo.io/"><img src="https://avatars.githubusercontent.com/u/5351546?v=4?s=70" width="70px;" alt="Xuanwo"/><br /><sub><b>Xuanwo</b></sub></a><br /><a href="#question-Xuanwo" title="Answering Questions">💬</a> <a href="#design-Xuanwo" title="Design">🎨</a> <a href="#ideas-Xuanwo" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/tensorchord/envd/pulls?q=is%3Apr+reviewed-by%3AXuanwo" title="Reviewed Pull Requests">👀</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/enjoyliu"><img src="https://avatars.githubusercontent.com/u/13460894?v=4?s=70" width="70px;" alt="Yijiang Liu"/><br /><sub><b>Yijiang Liu</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=enjoyliu" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://elon.fun/"><img src="https://avatars.githubusercontent.com/u/8433465?v=4?s=70" width="70px;" alt="Yilong Li"/><br /><sub><b>Yilong Li</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=dragonly" title="Documentation">📖</a> <a href="https://github.com/tensorchord/envd/issues?q=author%3Adragonly" title="Bug reports">🐛</a> <a href="https://github.com/tensorchord/envd/commits?author=dragonly" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://terrytangyuan.github.io/about/"><img src="https://avatars.githubusercontent.com/u/4269898?v=4?s=70" width="70px;" alt="Yuan Tang"/><br /><sub><b>Yuan Tang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=terrytangyuan" title="Code">💻</a> <a href="#design-terrytangyuan" title="Design">🎨</a> <a href="https://github.com/tensorchord/envd/commits?author=terrytangyuan" title="Documentation">📖</a> <a href="#ideas-terrytangyuan" title="Ideas, Planning, & Feedback">🤔</a></td> <td align="center" valign="top" width="14.28%"><a href="https://rudeigerc.dev/"><img src="https://avatars.githubusercontent.com/u/18243819?v=4?s=70" width="70px;" alt="Yuchen Cheng"/><br /><sub><b>Yuchen Cheng</b></sub></a><br /><a href="https://github.com/tensorchord/envd/issues?q=author%3Arudeigerc" title="Bug reports">🐛</a> <a href="#infra-rudeigerc" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#maintenance-rudeigerc" title="Maintenance">🚧</a> <a href="#tool-rudeigerc" title="Tools">🔧</a></td> <td align="center" valign="top" width="14.28%"><a href="http://lunarwhite.github.io"><img src="https://avatars.githubusercontent.com/u/57584831?v=4?s=70" width="70px;" alt="Yuedong Wu"/><br /><sub><b>Yuedong Wu</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=lunarwhite" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/yczheng0"><img src="https://avatars.githubusercontent.com/u/21327543?v=4?s=70" width="70px;" alt="Yunchuan Zheng"/><br /><sub><b>Yunchuan Zheng</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=yczheng0" title="Code">💻</a></td> - <td align="center" valign="top" width="14.28%"><a href="http://lizheming.top"><img src="https://avatars.githubusercontent.com/u/9639449?v=4?s=70" width="70px;" alt="Zheming Li"/><br /><sub><b>Zheming Li</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=lizhemingi" title="Code">💻</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="http://lizheming.top"><img src="https://avatars.githubusercontent.com/u/9639449?v=4?s=70" width="70px;" alt="Zheming Li"/><br /><sub><b>Zheming Li</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=lizhemingi" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/Xiaoaier-Z-L"><img src="https://avatars.githubusercontent.com/u/96805673?v=4?s=70" width="70px;" alt="Zhenguo.Li"/><br /><sub><b>Zhenguo.Li</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=Xiaoaier-Z-L" title="Code">💻</a> <a href="https://github.com/tensorchord/envd/commits?author=Xiaoaier-Z-L" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://blog.triplez.cn/"><img src="https://avatars.githubusercontent.com/u/16285716?v=4?s=70" width="70px;" alt="Zhenzhen Zhao"/><br /><sub><b>Zhenzhen Zhao</b></sub></a><br /><a href="#infra-Triple-Z" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a> <a href="#userTesting-Triple-Z" title="User Testing">📓</a> <a href="https://github.com/tensorchord/envd/commits?author=Triple-Z" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://t.me/littlepoint"><img src="https://avatars.githubusercontent.com/u/7611700?v=4?s=70" width="70px;" alt="Zhizhen He"/><br /><sub><b>Zhizhen He</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=hezhizhen" title="Code">💻</a> <a href="https://github.com/tensorchord/envd/commits?author=hezhizhen" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/cutecutecat"><img src="https://avatars.githubusercontent.com/u/19801166?v=4?s=70" width="70px;" alt="cutecutecat"/><br /><sub><b>cutecutecat</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=cutecutecat" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/dqhl76"><img src="https://avatars.githubusercontent.com/u/69136320?v=4?s=70" width="70px;" alt="dqhl76"/><br /><sub><b>dqhl76</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=dqhl76" title="Documentation">📖</a> <a href="https://github.com/tensorchord/envd/commits?author=dqhl76" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://lxb1226.github.io/"><img src="https://avatars.githubusercontent.com/u/33415192?v=4?s=70" width="70px;" alt="heyjude"/><br /><sub><b>heyjude</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=lxb1226" title="Code">💻</a></td> - <td align="center" valign="top" width="14.28%"><a href="https://github.com/jimoosciuc"><img src="https://avatars.githubusercontent.com/u/33337387?v=4?s=70" width="70px;" alt="jimoosciuc"/><br /><sub><b>jimoosciuc</b></sub></a><br /><a href="#userTesting-jimoosciuc" title="User Testing">📓</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="https://github.com/jimoosciuc"><img src="https://avatars.githubusercontent.com/u/33337387?v=4?s=70" width="70px;" alt="jimoosciuc"/><br /><sub><b>jimoosciuc</b></sub></a><br /><a href="#userTesting-jimoosciuc" title="User Testing">📓</a></td> <td align="center" valign="top" width="14.28%"><a href="https://kenwoodjw.github.io"><img src="https://avatars.githubusercontent.com/u/10386710?v=4?s=70" width="70px;" alt="kenwoodjw"/><br /><sub><b>kenwoodjw</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=kenwoodjw" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://www.hwdef.org"><img src="https://avatars.githubusercontent.com/u/13084946?v=4?s=70" width="70px;" alt="li mengyang"/><br /><sub><b>li mengyang</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=hwdef" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/aseaday"><img src="https://avatars.githubusercontent.com/u/3927355?v=4?s=70" width="70px;" alt="nullday"/><br /><sub><b>nullday</b></sub></a><br /><a href="#ideas-aseaday" title="Ideas, Planning, & Feedback">🤔</a> <a href="https://github.com/tensorchord/envd/commits?author=aseaday" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/rrain7"><img src="https://avatars.githubusercontent.com/u/49144127?v=4?s=70" width="70px;" alt="rrain7"/><br /><sub><b>rrain7</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=rrain7" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://tisonkun.org/"><img src="https://avatars.githubusercontent.com/u/18818196?v=4?s=70" width="70px;" alt="tison"/><br /><sub><b>tison</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=tisonkun" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="http://fatelei.github.io"><img src="https://avatars.githubusercontent.com/u/961094?v=4?s=70" width="70px;" alt="wangxiaolei"/><br /><sub><b>wangxiaolei</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=fatelei" title="Code">💻</a></td> - <td align="center" valign="top" width="14.28%"><a href="https://github.com/sea-wyq"><img src="https://avatars.githubusercontent.com/u/22475606?v=4?s=70" width="70px;" alt="wyq"/><br /><sub><b>wyq</b></sub></a><br /><a href="https://github.com/tensorchord/envd/issues?q=author%3Asea-wyq" title="Bug reports">🐛</a> <a href="#design-sea-wyq" title="Design">🎨</a> <a href="https://github.com/tensorchord/envd/commits?author=sea-wyq" title="Code">💻</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="https://github.com/sea-wyq"><img src="https://avatars.githubusercontent.com/u/22475606?v=4?s=70" width="70px;" alt="wyq"/><br /><sub><b>wyq</b></sub></a><br /><a href="https://github.com/tensorchord/envd/issues?q=author%3Asea-wyq" title="Bug reports">🐛</a> <a href="#design-sea-wyq" title="Design">🎨</a> <a href="https://github.com/tensorchord/envd/commits?author=sea-wyq" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://oubotong.github.io/johan"><img src="https://avatars.githubusercontent.com/u/26356127?v=4?s=70" width="70px;" alt="x0oo0x"/><br /><sub><b>x0oo0x</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=oubotong" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xiangtianyu"><img src="https://avatars.githubusercontent.com/u/10825900?v=4?s=70" width="70px;" alt="xiangtianyu"/><br /><sub><b>xiangtianyu</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xiangtianyu" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xieydd"><img src="https://avatars.githubusercontent.com/u/20329697?v=4?s=70" width="70px;" alt="xieydd"/><br /><sub><b>xieydd</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xieydd" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xing0821"><img src="https://avatars.githubusercontent.com/u/54933318?v=4?s=70" width="70px;" alt="xing0821"/><br /><sub><b>xing0821</b></sub></a><br /><a href="#ideas-xing0821" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-xing0821" title="User Testing">📓</a> <a href="https://github.com/tensorchord/envd/commits?author=xing0821" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://xxchan.github.io"><img src="https://avatars.githubusercontent.com/u/37948597?v=4?s=70" width="70px;" alt="xxchan"/><br /><sub><b>xxchan</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xxchan" title="Documentation">📖</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/zhyon404"><img src="https://avatars.githubusercontent.com/u/32242529?v=4?s=70" width="70px;" alt="zhyon404"/><br /><sub><b>zhyon404</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=zhyon404" title="Code">💻</a></td> + </tr> + <tr> <td align="center" valign="top" width="14.28%"><a href="https://www.homeboyc.cn/"><img src="https://avatars.githubusercontent.com/u/22193008?v=4?s=70" width="70px;" alt="杨成锴"/><br /><sub><b>杨成锴</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=asjdf" title="Code">💻</a></td> </tr> </tbody> From 13f581a8caccd93cabdfc11784d150a5bc3205a6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:47:40 +0800 Subject: [PATCH 269/355] chore(deps): bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#1820) Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from 0.14.0 to 0.17.0. - [Commits](https://github.com/golang/crypto/compare/v0.14.0...v0.17.0) --- updated-dependencies: - dependency-name: golang.org/x/crypto dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 8 ++++---- go.sum | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/go.mod b/go.mod index c2e98e970..ddad09e61 100644 --- a/go.mod +++ b/go.mod @@ -44,9 +44,9 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.14.0 + golang.org/x/crypto v0.17.0 golang.org/x/sync v0.3.0 - golang.org/x/term v0.13.0 + golang.org/x/term v0.15.0 golang.org/x/time v0.3.0 ) @@ -188,8 +188,8 @@ require ( golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/tools v0.12.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect diff --git a/go.sum b/go.sum index cbdd3c142..81e981245 100644 --- a/go.sum +++ b/go.sum @@ -892,8 +892,8 @@ golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1133,16 +1133,16 @@ golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= -golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1154,8 +1154,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= From 5fcad04ef4cda59e92e80bf07ba0985b9fb7aead Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:48:07 +0800 Subject: [PATCH 270/355] chore(deps): bump actions/download-artifact from 3 to 4 (#1819) Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 3 to 4. - [Release notes](https://github.com/actions/download-artifact/releases) - [Commits](https://github.com/actions/download-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/download-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 10 +++++----- .github/workflows/nightly.yml | 6 +++--- .github/workflows/release.yml | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 344bce85a..0ffb70b29 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -288,28 +288,28 @@ jobs: run: | go install github.com/mattn/goveralls@latest - name: Get coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: coverage-out path: merge - name: Get cli e2e coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: e2e-cli-coverage-out path: merge - name: Get language e2e coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: e2e-lang-coverage-out path: merge - name: Get cli v1 e2e coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: e2e-cli-v1-coverage-out path: merge - name: Get language v1 e2e coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: e2e-lang-v1-coverage-out path: merge diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index c751adfe2..c70e28985 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -171,17 +171,17 @@ jobs: go install github.com/mattn/goveralls@latest go install github.com/wadey/gocovmerge@latest - name: Get coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: coverage-out path: coverage.out - name: Get cli e2e coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: e2e-cli-coverage-out path: e2e-cli-coverage.out - name: Get language e2e coverage report - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: e2e-lang-coverage-out path: e2e-lang-coverage.out diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dec430582..56db0dbfc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -57,7 +57,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Get gobin - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: gobin_${{ github.event.release.tag_name }} path: dist/ @@ -176,7 +176,7 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Get gobin - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: gobin_${{ github.event.release.tag_name }} path: dist/ From 4714dd2172ff635300f055e57700389565604d92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:48:35 +0800 Subject: [PATCH 271/355] chore(deps): bump actions/upload-artifact from 3 to 4 (#1818) Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3 to 4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 10 +++++----- .github/workflows/nightly.yml | 14 +++++++------- .github/workflows/release.yml | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0ffb70b29..e0f148efa 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -92,7 +92,7 @@ jobs: - name: Test run: make test - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-out path: coverage.out @@ -128,7 +128,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-cli-coverage-out path: e2e-cli-coverage.out @@ -164,7 +164,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-cli-v1-coverage-out path: e2e-cli-v1-coverage.out @@ -200,7 +200,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-lang-coverage-out path: e2e-lang-coverage.out @@ -236,7 +236,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-lang-v1-coverage-out path: e2e-lang-v1-coverage.out diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index c70e28985..40b506318 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -73,7 +73,7 @@ jobs: - name: Test run: make test - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-out path: coverage.out @@ -110,7 +110,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-cli-coverage-out path: e2e-cli-coverage.out @@ -147,7 +147,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-lang-coverage-out path: e2e-lang-coverage.out @@ -249,7 +249,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-doc-coverage-out path: e2e-doc-coverage.out @@ -286,7 +286,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-cli-v1-coverage-out path: e2e-cli-v1-coverage.out @@ -323,7 +323,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-lang-v1-coverage-out path: e2e-lang-v1-coverage.out @@ -360,7 +360,7 @@ jobs: env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - name: Upload coverage report - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: e2e-doc-v1-coverage-out path: e2e-doc-v1-coverage.out diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 56db0dbfc..fa0ef8e28 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - name: upload gobin - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: gobin_${{ github.event.release.tag_name }} retention-days: 1 From f1d4d4615410d082e1828b511962a99e37fa12cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 28 Dec 2023 09:48:56 +0800 Subject: [PATCH 272/355] chore(deps): bump crate-ci/typos from 1.16.24 to 1.16.25 (#1817) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.24 to 1.16.25. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.24...v1.16.25) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index e0f148efa..1d13cbc6b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.24 + uses: crate-ci/typos@v1.16.25 with: config: ./typos.toml lint: From 81b30324e297f1d55b26dc82e831255517b11d47 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 28 Dec 2023 10:42:55 +0800 Subject: [PATCH 273/355] fix: update docker/docker dependency (#1824) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 5 +---- go.sum | 5 +++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/go.mod b/go.mod index ddad09e61..86f4dd1fd 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 github.com/docker/cli v24.0.7+incompatible - github.com/docker/docker v23.0.3+incompatible + github.com/docker/docker v24.0.7+incompatible github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 @@ -201,6 +201,3 @@ require ( gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) - -// Copied from buildkit to make github.com/tonistiigi/fsutil happy. -replace github.com/docker/docker => github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible diff --git a/go.sum b/go.sum index 81e981245..8b8f31372 100644 --- a/go.sum +++ b/go.sum @@ -325,8 +325,9 @@ github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1x github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible h1:Ptj2To+ezU/mCBUKdYXBQ2r3/2EJojAlOZrsgprF+is= -github.com/docker/docker v20.10.3-0.20220224222438-c78f6963a1c0+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= +github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= From 3394589f9b57fd12d87661692c73564ba9f10eee Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 28 Dec 2023 11:22:59 +0800 Subject: [PATCH 274/355] fix: set up python in pypi release step (#1825) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/envd-starship.yaml | 37 ---------------------------- .github/workflows/release.yml | 32 ++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 39 deletions(-) delete mode 100644 .github/workflows/envd-starship.yaml diff --git a/.github/workflows/envd-starship.yaml b/.github/workflows/envd-starship.yaml deleted file mode 100644 index 4172c2825..000000000 --- a/.github/workflows/envd-starship.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: release - -on: - release: - types: [created] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -concurrency: - group: ${{ github.ref }}-${{ github.workflow }} - cancel-in-progress: true - -jobs: - - docker: - name: Push starship image to Docker Hub - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Docker Login - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_TOKEN }} - - name: Docker Setup QEMU - uses: docker/setup-qemu-action@v3 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Build and push - uses: docker/build-push-action@v5 - with: - push: true - file: base-images/envd-starship/envd-starship.Dockerfile - platforms: linux/amd64,linux/arm64 - tags: tensorchord/starship:v0.0.1 - cache-from: type=gha - cache-to: type=gha,mode=max \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fa0ef8e28..da46c20a3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -73,6 +73,10 @@ jobs: mkdir -p bin mv dist/envd_darwin_all/envd bin/envd chmod +x bin/envd + - name: setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' - name: Build wheels uses: pypa/cibuildwheel@v2.16.2 env: @@ -82,8 +86,8 @@ jobs: - name: Build source distribution if: runner.os == 'Linux' # Only release source under linux to avoid conflict run: | - python3 -m pip install wheel - python3 setup.py sdist + python -m pip install wheel + python setup.py sdist mv dist/*.tar.gz wheelhouse/ - name: Upload to PyPI env: @@ -119,6 +123,30 @@ jobs: - name: Docker Buildx run: | ./base-images/build.sh + envd_starship_publish: + name: Push starship image to Docker Hub + runs-on: ubuntu-latest + needs: goreleaser + steps: + - uses: actions/checkout@v4 + - name: Docker Login + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERIO_USERNAME }} + password: ${{ secrets.DOCKERIO_TOKEN }} + - name: Docker Setup QEMU + uses: docker/setup-qemu-action@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Build and push + uses: docker/build-push-action@v5 + with: + push: true + file: base-images/envd-starship/envd-starship.Dockerfile + platforms: linux/amd64,linux/arm64 + tags: tensorchord/starship:v0.0.1 + cache-from: type=gha + cache-to: type=gha,mode=max envd_image_push: name: Build & push envd images # only trigger on main repo when tag starts with v From 48e5239ecd55580a861018ff0abd90e05deb56f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 20:00:22 +0800 Subject: [PATCH 275/355] chore(deps): bump crate-ci/typos from 1.16.25 to 1.16.26 (#1827) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.25 to 1.16.26. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.25...v1.16.26) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1d13cbc6b..46173c6cf 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.25 + uses: crate-ci/typos@v1.16.26 with: config: ./typos.toml lint: From 6f40b668b4d4f720b3b9d46b40bc5ff923c96675 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 1 Jan 2024 20:00:36 +0800 Subject: [PATCH 276/355] docs: updated CHANGELOG.md (#1823) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0163c5726..a6219dd23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,33 @@ # Changelog +## v0.3.43 (2023-12-28) + + * [3394589](https://github.com/tensorchord/envd/commit/3394589f9b57fd12d87661692c73564ba9f10eee) fix: set up python in pypi release step (#1825) + +### Contributors + + * Keming + +## v0.3.42 (2023-12-28) + + * [81b3032](https://github.com/tensorchord/envd/commit/81b30324e297f1d55b26dc82e831255517b11d47) fix: update docker/docker dependency (#1824) + +### Contributors + + * Keming + +## v0.3.41 (2023-12-28) + + * [29788b5](https://github.com/tensorchord/envd/commit/29788b550cc54487f2da81055994bfb216d872f4) feat(log): switch to structured logging(#issue 889) (#1821) + * [4c13224](https://github.com/tensorchord/envd/commit/4c132241ceee866819fed9495b98bf13a42ecae5) fix: indent-error-flow lint (#1795) + * [9027d35](https://github.com/tensorchord/envd/commit/9027d3593b37898dadaaefa2c9a1078611450da6) feat: warn about envd v0 `os` and `image` usage (#1790) + * [bffc025](https://github.com/tensorchord/envd/commit/bffc025da8725e2eab060d079bce2777c6987388) feat: add the reference subcommand to generate the markdown doc (#1766) + +### Contributors + + * Keming + * Shao Wang + ## v0.3.40 (2023-09-01) * [d99cfa4](https://github.com/tensorchord/envd/commit/d99cfa423c035cf1361bd22882ccc1a0b2436d64) feat: abort when trying to run `envd up` on non-dev images (#1751) From 7b49cc3748d6579acfeffdd8a92e03b1291582ee Mon Sep 17 00:00:00 2001 From: Shao Wang <77665902+Electronic-Waste@users.noreply.github.com> Date: Wed, 3 Jan 2024 15:15:34 +0800 Subject: [PATCH 277/355] feat(bootstrap): support resume (#1828) * fix: fix resume/restart issue in docker driver. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix resume/restart issue in nerdctl driver. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: pass lint test. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: add ContainerStatus type & consider more container status in `StartBuildkitd` Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: pass lint test. Signed-off-by: Electronic-Waste <2690692950@qq.com> * chore: add some comment. Signed-off-by: Electronic-Waste <2690692950@qq.com> * chore: extract `if-else` logics into `handleContainerCreated` in docker driver. Signed-off-by: Electronic-Waste <2690692950@qq.com> * chore: extract `if-else` logics into `handleContainerCreated` in nerdctl driver. Signed-off-by: Electronic-Waste <2690692950@qq.com> * refactor: combine ContainerStatus definition in driver. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: pass lint test. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: add license. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix some comments. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix `handleContainerCreated` logics and some message. Signed-off-by: Electronic-Waste <2690692950@qq.com> * fix: fix `StatusExited` logics in `handleContainerCreated`. Signed-off-by: Electronic-Waste <2690692950@qq.com> --------- Signed-off-by: Electronic-Waste <2690692950@qq.com> --- pkg/driver/docker/docker.go | 125 ++++++++++++++++++++++++++- pkg/driver/nerdctl/nerdctl.go | 158 ++++++++++++++++++++++++++++------ pkg/types/container.go | 27 ++++++ 3 files changed, 282 insertions(+), 28 deletions(-) create mode 100644 pkg/types/container.go diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 3d3d1a5ae..0051bc9ea 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -41,6 +41,7 @@ import ( "github.com/tensorchord/envd/pkg/driver" "github.com/tensorchord/envd/pkg/envd" + containerType "github.com/tensorchord/envd/pkg/types" "github.com/tensorchord/envd/pkg/util/buildkitutil" "github.com/tensorchord/envd/pkg/util/fileutil" ) @@ -235,6 +236,22 @@ func (c dockerClient) ResumeContainer(ctx context.Context, name string) (string, return name, nil } +func (c dockerClient) RemoveContainer(ctx context.Context, name string) (string, error) { + logger := logrus.WithField("container", name) + err := c.ContainerRemove(ctx, name, types.ContainerRemoveOptions{}) + if err != nil { + errCause := errors.UnwrapAll(err).Error() + switch { + case strings.Contains(errCause, "No such container"): + logger.Debug("container is not found, there is no need to remove it") + return "", errors.New("container not found") + default: + return "", errors.Wrap(err, "failed to remove container") + } + } + return name, nil +} + func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc *buildkitutil.BuildkitConfig, timeout time.Duration) (string, error) { logger := logrus.WithFields(logrus.Fields{ "tag": tag, @@ -284,11 +301,20 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * } created, _ := c.Exists(ctx, name) if created { - err := c.ContainerStart(ctx, name, types.ContainerStartOptions{}) + status, err := c.GetStatus(ctx, name) if err != nil { - return name, err + return name, errors.Wrap(err, "failed to get container status") + } + + err = c.handleContainerCreated(ctx, name, status, timeout) + if err != nil { + return name, errors.Wrap(err, "failed to handle container created condition") + } + + // When status is StatusDead/StatusRemoving, we need to create and start the container later(not to return directly). + if status != containerType.StatusDead && status != containerType.StatusRemoving { + return name, nil } - return name, nil } resp, err := c.ContainerCreate(ctx, config, hostConfig, nil, nil, name) if err != nil { @@ -338,6 +364,17 @@ func (c dockerClient) IsRunning(ctx context.Context, cname string) (bool, error) return container.State.Running, nil } +func (c dockerClient) GetStatus(ctx context.Context, cname string) (containerType.ContainerStatus, error) { + container, err := c.ContainerInspect(ctx, cname) + if err != nil { + if client.IsErrNotFound(err) { + return "", nil + } + return "", err + } + return containerType.ContainerStatus(container.State.Status), nil +} + // Load loads the docker image from the reader into the docker host. // It's up to the caller to close the io.ReadCloser. func (c dockerClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) error { @@ -452,6 +489,88 @@ func (c dockerClient) waitUntilRunning(ctx context.Context, } } +func (c dockerClient) waitUntilRemoved(ctx context.Context, + name string, timeout time.Duration) error { + logger := logrus.WithField("container", name) + logger.Debug("waiting to be removed") + + // Wait for the container to be removed + ctxTimeout, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + for { + select { + case <-time.After(waitingInterval): + exist, err := c.Exists(ctxTimeout, name) + if err != nil { + return errors.Wrap(err, "failed to check if container has been removed") + } + if !exist { + logger.Debug("the container has been removed") + return nil + } + case <-ctxTimeout.Done(): + container, err := c.ContainerInspect(ctx, name) + if err != nil { + logger.Debugf("failed to inspect container %s", name) + } + state, err := json.Marshal(container.State) + if err != nil { + logger.Debug("failed to marshal container state") + } + logger.Debugf("container state: %s", state) + return errors.Errorf("timeout %s: container can't be removed", timeout) + } + } +} + +func (c dockerClient) handleContainerCreated(ctx context.Context, + cname string, status containerType.ContainerStatus, timeout time.Duration) error { + logger := logrus.WithFields(logrus.Fields{ + "container": cname, + "status": status, + }) + + if status == containerType.StatusPaused { + logger.Info("container was paused, unpause it now...") + _, err := c.ResumeContainer(ctx, cname) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to unpause container") + } + } else if status == containerType.StatusExited { + logger.Info("container exited, try to start it...") + err := c.ContainerStart(ctx, cname, types.ContainerStartOptions{}) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to start exited cotaniner") + } + } else if status == containerType.StatusDead { + logger.Info("container is dead, try to remove it...") + err := c.ContainerRemove(ctx, cname, types.ContainerRemoveOptions{}) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to remove container") + } + } else if status == containerType.StatusCreated { + logger.Info("container is being created") + err := c.waitUntilRunning(ctx, cname, timeout) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to start container") + } + } else if status == containerType.StatusRemoving { + logger.Info("container is being removed.") + err := c.waitUntilRemoved(ctx, cname, timeout) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to remove container") + } + } + // No process for StatusRunning + + return nil +} + func GetDockerVersion() (int, error) { ctx := context.Background() diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 63dfca638..92ab708b2 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -28,6 +28,7 @@ import ( "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" + containerType "github.com/tensorchord/envd/pkg/types" "github.com/tensorchord/envd/pkg/util/buildkitutil" ) @@ -35,6 +36,10 @@ type nerdctlClient struct { bin string } +var ( + waitingInterval = 1 * time.Second +) + func NewClient(ctx context.Context) (driver.Client, error) { bin, err := exec.LookPath("nerdctl") if err != nil { @@ -80,30 +85,45 @@ func (nc *nerdctlClient) StartBuildkitd(ctx context.Context, tag, name string, b } existed, _ := nc.containerExists(ctx, name) - if !existed { - buildkitdCmd := "buildkitd" - // TODO: support mirror CA keypair - if len(bc.Registries) > 0 { - cfg, err := bc.String() - if err != nil { - return "", errors.Wrap(err, "failed to generate buildkit config") - } - buildkitdCmd = fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg) - logger.Debugf("setting buildkit config: %s", cfg) + if existed { + status, err := nc.GetStatus(ctx, name) + if err != nil { + return "", errors.Wrap(err, "failed to get container status") } - out, err := nc.exec(ctx, nil, "run", "-d", - "--name", name, - "--privileged", - "--entrypoint", "sh", - tag, "-c", buildkitdCmd) + err = nc.handleContainerCreated(ctx, name, status, timeout) if err != nil { - logger.WithError(err).Error("can not run buildkitd", out) - return "", errors.Wrap(err, "running buildkitd") + return "", errors.Wrap(err, "failed to handle container created condition") + } + + // When status is StatusDead/StatusRemoving, we nened to create and start the container later(not to return directly). + if status != containerType.StatusDead && status != containerType.StatusRemoving { + return name, nil } } - err := nc.waitUntilRunning(ctx, name, timeout) + buildkitdCmd := "buildkitd" + // TODO: support mirror CA keypair + if len(bc.Registries) > 0 { + cfg, err := bc.String() + if err != nil { + return "", errors.Wrap(err, "failed to generate buildkit config") + } + buildkitdCmd = fmt.Sprintf("mkdir /etc/buildkit && echo '%s' > /etc/buildkit/buildkitd.toml && buildkitd", cfg) + logger.Debugf("setting buildkit config: %s", cfg) + } + + out, err := nc.exec(ctx, "run", "-d", + "--name", name, + "--privileged", + "--entrypoint", "sh", + tag, "-c", buildkitdCmd) + if err != nil { + logger.WithError(err).Error("can not run buildkitd", out) + return "", errors.Wrap(err, "running buildkitd") + } + + err = nc.waitUntilRunning(ctx, name, timeout) return name, err } @@ -128,6 +148,14 @@ func (nc *nerdctlClient) Stats(ctx context.Context, cname string, statChan chan< return nil } +func (nc *nerdctlClient) GetStatus(ctx context.Context, cname string) (containerType.ContainerStatus, error) { + container, err := nc.containerInspect(ctx, cname) + if err != nil { + return "", err + } + return containerType.ContainerStatus(container.State.Status), nil +} + // TODO(kweizh): use container engine to wrap docker and nerdctl func (nc *nerdctlClient) waitUntilRunning(ctx context.Context, name string, timeout time.Duration) error { @@ -139,8 +167,8 @@ func (nc *nerdctlClient) waitUntilRunning(ctx context.Context, defer cancel() for { select { - case <-time.After(time.Second): - _, err := nc.exec(ctx, nil, "start", name) + case <-time.After(waitingInterval): + _, err := nc.exec(ctx, "start", name) if err != nil { continue } @@ -170,13 +198,96 @@ func (nc *nerdctlClient) waitUntilRunning(ctx context.Context, } } +func (nc *nerdctlClient) waitUntilRemoved(ctx context.Context, + name string, timeout time.Duration) error { + logger := logrus.WithField("container", name) + logger.Debug("waiting to be removed") + + // Wait for the container to be removed + ctxTimeout, cancel := context.WithTimeout(ctx, timeout) + defer cancel() + for { + select { + case <-time.After(waitingInterval): + exist, err := nc.containerExists(ctxTimeout, name) + if err != nil { + return errors.Wrap(err, "failed to check if container has been removed") + } + if !exist { + logger.Debug("the container has been removed") + return nil + } + case <-ctxTimeout.Done(): + container, err := nc.containerInspect(ctx, name) + if err != nil { + logger.Debugf("failed to inspect container %s", name) + } + state, err := json.Marshal(container.State) + if err != nil { + logger.Debug("failed to marshal container state") + } + logger.Debugf("container state: %s", state) + return errors.Errorf("timeout %s: container can't be removed", timeout) + } + } +} + +func (nc *nerdctlClient) handleContainerCreated(ctx context.Context, + cname string, status containerType.ContainerStatus, timeout time.Duration) error { + logger := logrus.WithFields(logrus.Fields{ + "container": cname, + "status": status, + }) + + if status == containerType.StatusPaused { + logger.Info("container was paused, unpause it now...") + out, err := nc.exec(ctx, "unpause", cname) + if err != nil { + logger.WithError(err).Error("can not run buildkitd", out) + return errors.Wrap(err, "failed to unpause container") + } + } else if status == containerType.StatusExited { + logger.Info("container exited, try to start it...") + out, err := nc.exec(ctx, "start", cname) + if err != nil { + logger.WithError(err).Error("can not run buildkitd", out) + return errors.Wrap(err, "failed to start exited cotaniner") + } + } else if status == containerType.StatusDead { + logger.Info("container is dead, try to remove it...") + out, err := nc.exec(ctx, "remove", cname) + if err != nil { + logger.WithError(err).Error("can not run buildkitd", out) + return errors.Wrap(err, "failed to remove cotaniner") + } + } else if status == containerType.StatusCreated { + logger.Info("container is being created.") + err := nc.waitUntilRunning(ctx, cname, timeout) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to start container") + } + } else if status == containerType.StatusRemoving { + // The remaining condition is StatusRemoving, we just need to wait. + logger.Info("container is being removed.") + err := nc.waitUntilRemoved(ctx, cname, timeout) + if err != nil { + logger.WithError(err).Error("can not run buildkitd") + return errors.Wrap(err, "failed to remove container") + } + } + // No process for StatusRunning + + return nil +} + func (nc *nerdctlClient) containerExists(ctx context.Context, tag string) (bool, error) { _, err := nc.containerInspect(ctx, tag) return err == nil, err } func (nc *nerdctlClient) containerInspect(ctx context.Context, tag string) (*types.ContainerJSON, error) { - out, err := nc.exec(ctx, nil, "inspect", tag) + out, err := nc.exec(ctx, "inspect", tag) if err != nil { // TODO(kweizh): check not found return nil, err @@ -192,14 +303,11 @@ func (nc *nerdctlClient) containerInspect(ctx context.Context, tag string) (*typ return &(cs[0]), nil } -func (nc *nerdctlClient) exec(ctx context.Context, stdin io.Reader, args ...string) (string, error) { +func (nc *nerdctlClient) exec(ctx context.Context, args ...string) (string, error) { cmd := exec.CommandContext(ctx, nc.bin, args...) var out bytes.Buffer cmd.Stdout = &out - if stdin != nil { - cmd.Stdin = stdin - } err := cmd.Run() if err != nil { diff --git a/pkg/types/container.go b/pkg/types/container.go new file mode 100644 index 000000000..cdd3f024e --- /dev/null +++ b/pkg/types/container.go @@ -0,0 +1,27 @@ +// Copyright 2023 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package types + +type ContainerStatus string + +const ( + StatusCreated ContainerStatus = "created" + StatusRunning ContainerStatus = "running" + StatusPaused ContainerStatus = "paused" + StatusRestarting ContainerStatus = "restarting" + StatusRemoving ContainerStatus = "removing" + StatusExited ContainerStatus = "exited" + StatusDead ContainerStatus = "dead" +) From df243803ca52f9eda7e62bcc01135a82f4b2194e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:39:03 +0800 Subject: [PATCH 278/355] chore(deps): bump crate-ci/typos from 1.16.26 to 1.17.0 (#1830) Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.16.26 to 1.17.0. - [Release notes](https://github.com/crate-ci/typos/releases) - [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md) - [Commits](https://github.com/crate-ci/typos/compare/v1.16.26...v1.17.0) --- updated-dependencies: - dependency-name: crate-ci/typos dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 46173c6cf..ea78204c6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.16.26 + uses: crate-ci/typos@v1.17.0 with: config: ./typos.toml lint: From 1f927d7813a687123e637d59c65417b8780088cf Mon Sep 17 00:00:00 2001 From: Shao Wang <77665902+Electronic-Waste@users.noreply.github.com> Date: Wed, 10 Jan 2024 11:36:38 +0800 Subject: [PATCH 279/355] fix: fix comment in /pkg/home/auth.go. (#1831) Signed-off-by: Electronic-Waste <2690692950@qq.com> --- pkg/home/auth.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/home/auth.go b/pkg/home/auth.go index abf8cad67..e72f8875e 100644 --- a/pkg/home/auth.go +++ b/pkg/home/auth.go @@ -33,7 +33,7 @@ type authManager interface { } func (m *generalManager) initAuth() error { - // Create $HOME/.config/envd/auth.json + // Create $HOME/.config/envd/auth auth, err := fileutil.ConfigFile("auth") if err != nil { return errors.Wrap(err, "failed to get auth file") From 94a466139e847569a1616538b7d25f3329fb4f21 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 16 Jan 2024 15:18:27 +0800 Subject: [PATCH 280/355] chore: rm auto merge, fix release tag (#1837) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 2 +- .github/workflows/auto-merge.yml | 42 -------------------------------- .github/workflows/release.yml | 10 ++------ 3 files changed, 3 insertions(+), 51 deletions(-) delete mode 100644 .github/workflows/auto-merge.yml diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ea78204c6..1fa5d126b 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -29,7 +29,7 @@ jobs: - name: Checkout Actions Repository uses: actions/checkout@v4 - name: Check spelling with custom config file - uses: crate-ci/typos@v1.17.0 + uses: crate-ci/typos@master with: config: ./typos.toml lint: diff --git a/.github/workflows/auto-merge.yml b/.github/workflows/auto-merge.yml deleted file mode 100644 index d7c37f7ba..000000000 --- a/.github/workflows/auto-merge.yml +++ /dev/null @@ -1,42 +0,0 @@ -# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/automating-dependabot-with-github-actions -name: auto-merge for dependabot and changelog PRs -on: pull_request - -permissions: - pull-requests: write - contents: write - -jobs: - dependabot: - runs-on: ubuntu-latest - if: ${{ github.actor == 'dependabot[bot]' }} - steps: - - name: Dependabot metadata - id: metadata - uses: dependabot/fetch-metadata@v1.6.0 - with: - github-token: "${{ secrets.GITHUB_TOKEN }}" - - name: Approve PR - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GH_TOKEN: ${{secrets.GITHUB_TOKEN}} - - name: Enable auto-merge for Dependabot PRs - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GH_TOKEN: ${{secrets.GITHUB_TOKEN}} - changelog: - runs-on: ubuntu-latest - if: ${{ github.actor == 'github-actions[bot]' }} - steps: - - name: Approve PR - run: gh pr review --approve "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GH_TOKEN: ${{secrets.GITHUB_TOKEN}} - - name: Enable auto-merge for Changelog PRs - run: gh pr merge --auto --squash "$PR_URL" - env: - PR_URL: ${{github.event.pull_request.html_url}} - GH_TOKEN: ${{secrets.GITHUB_TOKEN}} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index da46c20a3..c5553be55 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,14 +1,8 @@ name: release on: - push: - tags: - - 'v*' - pull_request: - paths: - - '.github/workflows/release.yml' - - '.goreleaser/' - - '.goreleaser.yaml' + release: + types: [published] jobs: goreleaser: From 363da834a103636778743675c34e4984fdb84351 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 15:35:50 +0800 Subject: [PATCH 281/355] docs: updated CHANGELOG.md (#1838) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6219dd23..444751f27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v0.3.44 (2024-01-16) + + * [1f927d7](https://github.com/tensorchord/envd/commit/1f927d7813a687123e637d59c65417b8780088cf) fix: fix comment in /pkg/home/auth.go. (#1831) + * [7b49cc3](https://github.com/tensorchord/envd/commit/7b49cc3748d6579acfeffdd8a92e03b1291582ee) feat(bootstrap): support resume (#1828) + +### Contributors + + * Shao Wang + ## v0.3.43 (2023-12-28) * [3394589](https://github.com/tensorchord/envd/commit/3394589f9b57fd12d87661692c73564ba9f10eee) fix: set up python in pypi release step (#1825) From 457f5fd9a0509f5ef64ce7ea9ce5a2cea601b85e Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 24 Jan 2024 18:33:01 +0800 Subject: [PATCH 282/355] fix: allow cli --gpus to override config gpu (#1843) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/up.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkg/app/up.go b/pkg/app/up.go index ef0f6cbcb..3fb01fcaf 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -123,7 +123,7 @@ var CommandUp = &cli.Command{ }, &cli.IntFlag{ Name: "gpus", - Usage: "Number of GPUs used in this environment", + Usage: "Number of GPUs used in this environment, this will override the `config.gpu()`", Value: 0, }, &cli.BoolFlag{ @@ -215,10 +215,18 @@ func up(clicontext *cli.Context) error { } else { defaultGPU = builder.GPUEnabled() } - numGPU := clicontext.Int("gpus") - if defaultGPU && numGPU == 0 { + numGPU := 0 + if defaultGPU { numGPU = 1 } + configGPU := builder.NumGPUs() + if defaultGPU && configGPU != 0 { + numGPU = configGPU + } + cliGPU := clicontext.Int("gpus") + if defaultGPU && cliGPU != 0 { + numGPU = cliGPU + } shmSize := builder.ShmSize() isSetShmSize := clicontext.IsSet("shm-size") From 639c188536181c1d621bd45d04b2243fef72c467 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 24 Jan 2024 19:35:14 +0800 Subject: [PATCH 283/355] fix: go-git security issue GHSA-mw99-9chc-xw7r (#1844) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 26 +++++++++++++----------- go.sum | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 86f4dd1fd..eaa763d34 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 github.com/gliderlabs/ssh v0.3.5 - github.com/go-git/go-git/v5 v5.4.2 + github.com/go-git/go-git/v5 v5.11.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.1 github.com/hashicorp/go-getter v1.7.3 @@ -56,17 +56,19 @@ require ( cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v0.13.0 // indirect cloud.google.com/go/storage v1.28.1 // indirect + dario.cat/mergo v1.0.0 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect github.com/aws/aws-sdk-go v1.44.122 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect + github.com/cloudflare/circl v1.3.3 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/containerd/continuity v0.4.1 // indirect @@ -81,11 +83,11 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect - github.com/emirpasic/gods v1.12.0 // indirect + github.com/emirpasic/gods v1.18.1 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect - github.com/go-git/gcfg v1.5.0 // indirect - github.com/go-git/go-billy/v5 v5.3.1 // indirect + github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect + github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-logr/logr v1.2.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect @@ -96,7 +98,7 @@ require ( github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect github.com/google/s2a-go v0.1.3 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect @@ -117,7 +119,7 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 // indirect + github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.16.3 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect @@ -152,15 +154,17 @@ require ( github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect github.com/pierrec/lz4/v4 v4.1.18 // indirect + github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/rogpeppe/go-internal v1.11.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.1.0 // indirect github.com/shirou/gopsutil/v3 v3.23.6 // indirect + github.com/skeema/knownhosts v1.2.1 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -173,7 +177,7 @@ require ( github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // indirect github.com/ulikunitz/xz v0.5.11 // indirect github.com/vbatts/tar-split v0.11.3 // indirect - github.com/xanzy/ssh-agent v0.3.0 // indirect + github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opencensus.io v0.24.0 // indirect @@ -186,11 +190,11 @@ require ( go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 // indirect golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.17.0 // indirect + golang.org/x/net v0.19.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect golang.org/x/sys v0.15.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.12.0 // indirect + golang.org/x/tools v0.13.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index 8b8f31372..ef2193293 100644 --- a/go.sum +++ b/go.sum @@ -189,6 +189,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= +dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= @@ -201,9 +203,11 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= +github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= @@ -213,6 +217,8 @@ github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00 github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= +github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= @@ -232,6 +238,7 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -250,6 +257,8 @@ github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmE github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= +github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -260,12 +269,14 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -337,8 +348,11 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= +github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= @@ -351,6 +365,7 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= @@ -372,13 +387,20 @@ github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4x github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= +github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= +github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= +github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= +github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= +github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -389,6 +411,7 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -405,6 +428,7 @@ github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6x github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= @@ -463,6 +487,8 @@ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8 github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= @@ -566,6 +592,8 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= +github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= +github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -716,6 +744,9 @@ github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7c github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= +github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -741,11 +772,14 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= +github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= @@ -771,6 +805,8 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= +github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= @@ -834,12 +870,19 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= +github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= +github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -866,6 +909,7 @@ go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= @@ -890,9 +934,12 @@ golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -933,6 +980,7 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -990,8 +1038,13 @@ golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfS golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1033,6 +1086,7 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1131,6 +1185,7 @@ golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1141,6 +1196,8 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9sn golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= @@ -1155,6 +1212,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1220,8 +1279,11 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 3ed665dc3f768f07ed160970fd0ec9b836cdb264 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 22:50:31 +0800 Subject: [PATCH 284/355] chore(deps): bump github.com/cloudflare/circl from 1.3.3 to 1.3.7 (#1845) Bumps [github.com/cloudflare/circl](https://github.com/cloudflare/circl) from 1.3.3 to 1.3.7. - [Release notes](https://github.com/cloudflare/circl/releases) - [Commits](https://github.com/cloudflare/circl/compare/v1.3.3...v1.3.7) --- updated-dependencies: - dependency-name: github.com/cloudflare/circl dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 4 +--- go.sum | 62 +++------------------------------------------------------- 2 files changed, 4 insertions(+), 62 deletions(-) diff --git a/go.mod b/go.mod index eaa763d34..5ce029ba8 100644 --- a/go.mod +++ b/go.mod @@ -62,13 +62,12 @@ require ( github.com/BurntSushi/toml v1.3.2 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect - github.com/acomagu/bufpipe v1.0.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect github.com/aws/aws-sdk-go v1.44.122 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect - github.com/cloudflare/circl v1.3.3 // indirect + github.com/cloudflare/circl v1.3.7 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect github.com/containerd/continuity v0.4.1 // indirect @@ -115,7 +114,6 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/imdario/mergo v0.3.15 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect diff --git a/go.sum b/go.sum index ef2193293..3be96c4ed 100644 --- a/go.sum +++ b/go.sum @@ -203,8 +203,6 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -215,18 +213,12 @@ github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8o github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7 h1:YoJbenK9C67SkzkDfmQuVln04ygHj3vjZfd9FL+GmQQ= -github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/acomagu/bufpipe v1.0.3 h1:fxAGrHZTgQ9w5QqVItgzwj235/uYZYgbXitB+dLupOk= -github.com/acomagu/bufpipe v1.0.3/go.mod h1:mxdxdup/WdsKVreO5GpW4+M/1CE2sMG4jeGJ2sYmHc4= -github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= @@ -257,8 +249,9 @@ github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmE github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= +github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -269,14 +262,12 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -348,9 +339,7 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= -github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= -github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= +github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -365,8 +354,6 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -381,24 +368,14 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= -github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= -github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= -github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.2.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= -github.com/go-git/go-billy/v5 v5.3.1 h1:CPiOUAzKtMRvolEKw+bG1PLRpT7D3LIs3/3ey4Aiu34= -github.com/go-git/go-billy/v5 v5.3.1/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= -github.com/go-git/go-git-fixtures/v4 v4.2.1 h1:n9gGL1Ct/yIw+nfsfr8s4+sbhT+Ncu2SubfXjIWgci8= -github.com/go-git/go-git-fixtures/v4 v4.2.1/go.mod h1:K8zd3kDUAykwTdDCr+I0per6Y6vMiRR/nnVTBtavnB0= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= -github.com/go-git/go-git/v5 v5.4.2 h1:BXyZu9t0VkbiHtqrsvdq39UDhGJTl1h55VW6CSC4aY4= -github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc= github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -411,7 +388,6 @@ github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -428,7 +404,6 @@ github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6x github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= @@ -485,7 +460,6 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -572,14 +546,10 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.15 h1:M8XP7IuFNsqUx6VPK2P9OSmsYsI/YFaGil0uD21V3dM= -github.com/imdario/mergo v0.3.15/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= -github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= github.com/jgautheron/codename-generator v0.0.0-20150829203204-16d037c7cc3c/go.mod h1:FJRkXmPrkHw0WDjB/LXMUhjWJ112Y6JUYnIVBOy8oH8= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= @@ -590,8 +560,6 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351 h1:DowS9hvgyYSX4TO5NpyC606/Z4SxnNYbT+WX27or6Ck= -github.com/kevinburke/ssh_config v0.0.0-20201106050909-4977a11b4351/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= @@ -623,8 +591,6 @@ github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/matryer/is v1.2.0 h1:92UTHpy8CDwaJ08GqLDzhhuixiBUUD1p3AU6PHddz4A= -github.com/matryer/is v1.2.0/go.mod h1:2fLPjFQM9rhQ15aVEtbuwhJinnOqrmgXPNdZsdwlWXA= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -688,7 +654,6 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= @@ -744,7 +709,6 @@ github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7c github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= @@ -770,7 +734,6 @@ github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= @@ -779,7 +742,6 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= @@ -870,19 +832,12 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/xanzy/ssh-agent v0.3.0 h1:wUMzuKtKilRgBAD1sUb8gOwwRr2FGoBVumcjoOACClI= -github.com/xanzy/ssh-agent v0.3.0/go.mod h1:3s9xbODqPuuhK9JV1R321M/FlMZSBvE5aY6eAcqrDh0= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -909,7 +864,6 @@ go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= -go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= @@ -924,7 +878,6 @@ go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1dr go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1020,7 +973,6 @@ golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210326060303-6b1517762897/go.mod h1:uSPa2vr4CLtc/ILN5odXGNXS6mhrKVzTaCXzk9m6W3k= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1041,8 +993,6 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= -golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1144,12 +1094,10 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210502180810-71e4cd670f79/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1280,8 +1228,6 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= -golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1517,9 +1463,7 @@ google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= From 24c36729e7d4f3618be916f1da9d03ec7f14fa01 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:13:13 +0800 Subject: [PATCH 285/355] docs: updated CHANGELOG.md (#1846) Signed-off-by: GitHub <noreply@github.com> Co-authored-by: kemingy <kemingy@users.noreply.github.com> --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 444751f27..d5777d957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v0.3.45 (2024-01-24) + + * [639c188](https://github.com/tensorchord/envd/commit/639c188536181c1d621bd45d04b2243fef72c467) fix: go-git security issue GHSA-mw99-9chc-xw7r (#1844) + * [457f5fd](https://github.com/tensorchord/envd/commit/457f5fd9a0509f5ef64ce7ea9ce5a2cea601b85e) fix: allow cli --gpus to override config gpu (#1843) + +### Contributors + + * Keming + ## v0.3.44 (2024-01-16) * [1f927d7](https://github.com/tensorchord/envd/commit/1f927d7813a687123e637d59c65417b8780088cf) fix: fix comment in /pkg/home/auth.go. (#1831) From 1da7ac742e986f33105ebdca2c52f914d499d312 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 24 Jan 2024 23:25:18 +0800 Subject: [PATCH 286/355] chore(deps): bump actions/cache from 3 to 4 (#1839) Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c5553be55..415b657ac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -102,7 +102,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Cache Docker layers - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache with: path: /tmp/.buildx-cache @@ -152,7 +152,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Cache Docker layers - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache with: path: /tmp/.buildx-cache @@ -190,7 +190,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Cache Docker layers - uses: actions/cache@v3 + uses: actions/cache@v4 id: cache with: path: /tmp/.buildx-cache From b9610e60fae9905591379709431d92aae88aab05 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 10:57:53 +0800 Subject: [PATCH 287/355] chore(deps): bump pypa/cibuildwheel from 2.16.2 to 2.16.4 (#1847) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.16.2 to 2.16.4. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.16.2...v2.16.4) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 415b657ac..31f983ce1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.16.2 + uses: pypa/cibuildwheel@v2.16.4 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 95ae9db9bef7f236c40b74d04539215e4731b7af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 17:53:09 +0800 Subject: [PATCH 288/355] chore(deps): bump peter-evans/create-pull-request from 5 to 6 (#1852) Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 5 to 6. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v5...v6) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/changelog.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index 23b633108..8ac254644 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -17,7 +17,7 @@ jobs: - run: git fetch --prune --prune-tags - run: git tag -l 'v*' - run: ./hack/changelog.sh > CHANGELOG.md - - uses: peter-evans/create-pull-request@v5 + - uses: peter-evans/create-pull-request@v6 with: title: 'docs: updated CHANGELOG.md' commit-message: 'docs: updated CHANGELOG.md' From 73e4671bd592877b51e3ea4b6efd185fc368c348 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:02:11 +0800 Subject: [PATCH 289/355] chore(deps): bump pypa/cibuildwheel from 2.16.4 to 2.16.5 (#1851) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.16.4 to 2.16.5. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.16.4...v2.16.5) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 31f983ce1..a5b5e4591 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.16.4 + uses: pypa/cibuildwheel@v2.16.5 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From c3df9cb742e1bd7737acc0839449c9e1aa13bed4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 09:54:16 +0000 Subject: [PATCH 290/355] chore(deps): bump github.com/opencontainers/runc from 1.1.5 to 1.1.12 (#1849) Bumps [github.com/opencontainers/runc](https://github.com/opencontainers/runc) from 1.1.5 to 1.1.12. - [Release notes](https://github.com/opencontainers/runc/releases) - [Changelog](https://github.com/opencontainers/runc/blob/v1.1.12/CHANGELOG.md) - [Commits](https://github.com/opencontainers/runc/compare/v1.1.5...v1.1.12) --- updated-dependencies: - dependency-name: github.com/opencontainers/runc dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 14 ++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/go.mod b/go.mod index 5ce029ba8..a8d67bb22 100644 --- a/go.mod +++ b/go.mod @@ -147,7 +147,7 @@ require ( github.com/muesli/termenv v0.15.2 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect - github.com/opencontainers/runc v1.1.5 // indirect + github.com/opencontainers/runc v1.1.12 // indirect github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect diff --git a/go.sum b/go.sum index 3be96c4ed..b7d1814c6 100644 --- a/go.sum +++ b/go.sum @@ -240,14 +240,12 @@ github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FD github.com/charmbracelet/lipgloss v0.8.0 h1:IS00fk4XAHcf8uZKc3eHeMUTCxUH6NkaTrdyCQk84RU= github.com/charmbracelet/lipgloss v0.8.0/go.mod h1:p4eYUZZJ/0oXTuCQKFF8mqyKCz0ja6y+7DniDDw5KKU= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= @@ -272,7 +270,6 @@ github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1 github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= @@ -316,7 +313,6 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= @@ -396,7 +392,6 @@ github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEe github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= @@ -629,7 +624,6 @@ github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YO github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= @@ -689,14 +683,13 @@ github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.5 h1:L44KXEpKmfWDcS02aeGm8QNTFXTo2D+8MYGDIJ/GDEs= -github.com/opencontainers/runc v1.1.5/go.mod h1:1J5XiS+vdZ3wCyZybsuxXZWGrgSr8fFJHLXuG2PsnNg= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= @@ -745,7 +738,6 @@ github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZj github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= @@ -1106,10 +1098,8 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= From e043233dc650d955c8e755ee55c4dd8667554fcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:04:16 +0800 Subject: [PATCH 291/355] chore(deps): bump golangci/golangci-lint-action from 3 to 4 (#1853) Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 3 to 4. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v3...v4) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- .github/workflows/nightly.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 1fa5d126b..0dab4f517 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -54,7 +54,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v3 + uses: golangci/golangci-lint-action@v4 with: args: --timeout=5m version: latest diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 40b506318..ad7d77ed5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -34,7 +34,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v3 + uses: golangci/golangci-lint-action@v4 with: args: --timeout=5m version: latest From d61ca2e543fd5ec6d8ce238304fb329ee8ed3440 Mon Sep 17 00:00:00 2001 From: zhang-wei <zhangwei24@apache.org> Date: Mon, 11 Mar 2024 18:42:43 +0800 Subject: [PATCH 292/355] feat: envd up with --gpu-set (#1861) * feat: envd up with --gpu-set Signed-off-by: zhangwei <zhangwei24@apache.org> * fix lint Signed-off-by: zhangwei <zhangwei24@apache.org> * fix lint Signed-off-by: zhangwei <zhangwei24@apache.org> * fix lint Signed-off-by: zhangwei <zhangwei24@apache.org> * fix compilation errors Signed-off-by: zhangwei <zhangwei24@apache.org> * fix bug Signed-off-by: zhangwei <zhangwei24@apache.org> --------- Signed-off-by: zhangwei <zhangwei24@apache.org> --- pkg/app/up.go | 15 ++++ pkg/envd/docker.go | 43 ++++++----- pkg/envd/docker_test.go | 164 ++++++++++++++++++++++++++++++++++++++++ pkg/envd/types.go | 1 + 4 files changed, 203 insertions(+), 20 deletions(-) create mode 100644 pkg/envd/docker_test.go diff --git a/pkg/app/up.go b/pkg/app/up.go index 3fb01fcaf..8406b2296 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -17,6 +17,7 @@ package app import ( "fmt" "path/filepath" + "strconv" "time" "github.com/cockroachdb/errors" @@ -126,6 +127,11 @@ var CommandUp = &cli.Command{ Usage: "Number of GPUs used in this environment, this will override the `config.gpu()`", Value: 0, }, + &cli.StringFlag{ + Name: "gpu-set", + Usage: "GPU devices used in this environment, such as `all`, `'\"device=1,3\"'`, `count=2`(all to pass all GPUs). This will override the `--gpus`", + Value: "", + }, &cli.BoolFlag{ Name: "force", Usage: "Force rebuild and run the container although the previous container is running", @@ -227,6 +233,14 @@ func up(clicontext *cli.Context) error { if defaultGPU && cliGPU != 0 { numGPU = cliGPU } + gpuSet := "" + if defaultGPU && numGPU != 0 { + gpuSet = strconv.Itoa(numGPU) + } + cliGPUSet := clicontext.String("gpu-set") + if defaultGPU && len(cliGPUSet) > 0 { + gpuSet = cliGPUSet + } shmSize := builder.ShmSize() isSetShmSize := clicontext.IsSet("shm-size") @@ -253,6 +267,7 @@ func up(clicontext *cli.Context) error { BuildContext: buildOpt.BuildContextDir, Image: buildOpt.Tag, NumGPU: numGPU, + GPUSet: gpuSet, Forced: clicontext.Bool("force"), Timeout: clicontext.Duration("timeout"), SshdHost: clicontext.String("host"), diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 18386203c..50931c541 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -25,6 +25,7 @@ import ( "time" "github.com/cockroachdb/errors" + "github.com/docker/cli/opts" dockertypes "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" @@ -349,7 +350,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes logger := logrus.WithFields(logrus.Fields{ "tag": so.Image, "environment": so.EnvironmentName, - "gpu": so.NumGPU, + "gpu-set": so.GPUSet, "shm": so.ShmSize, "cpu": so.NumCPU, "cpu-set": so.CPUSet, @@ -361,7 +362,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes defer bar.Finish() bar.UpdateTitle("configure the environment") - if so.NumGPU != 0 { + if len(so.GPUSet) > 0 { nvruntimeExists, err := e.GPUEnabled(ctx) if err != nil { return nil, errors.Wrap(err, "failed to check if nvidia-runtime is installed") @@ -560,9 +561,13 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes } } - if so.NumGPU != 0 { + if len(so.GPUSet) > 0 { logger.Debug("GPU is enabled.") - hostConfig.DeviceRequests = deviceRequests(so.NumGPU) + hostConfig.DeviceRequests, err = deviceRequests(so.GPUSet) + if err != nil { + return nil, errors.Wrap(err, "failed to parse gpu-set flag") + + } } config.Labels = e.labels(g, so.EnvironmentName, @@ -736,23 +741,21 @@ func (e dockerEngine) PruneImage(ctx context.Context) (dockertypes.ImagesPruneRe return pruneReport, nil } -func deviceRequests(count int) []container.DeviceRequest { - return []container.DeviceRequest{ - { - Driver: "nvidia", - Capabilities: [][]string{ - {"gpu"}, - {"nvidia"}, - {"compute"}, - {"compat32"}, - {"graphics"}, - {"utility"}, - {"video"}, - {"display"}, - }, - Count: count, - }, +func deviceRequests(value string) ([]container.DeviceRequest, error) { + if value == "" { + return nil, nil + } + if !strings.Contains(value, "capabilities=") { + value += ",\"capabilities=nvidia,compute,compat32,graphics,utility,video,display\"" + } + if !strings.Contains(value, "driver=") { + value += ",driver=nvidia" + } + opt := opts.GpuOpts{} + if err := opt.Set(value); err != nil { + return nil, err } + return opt.Value(), nil } func (e dockerEngine) labels(g ir.Graph, name string, diff --git a/pkg/envd/docker_test.go b/pkg/envd/docker_test.go new file mode 100644 index 000000000..32aa4b97f --- /dev/null +++ b/pkg/envd/docker_test.go @@ -0,0 +1,164 @@ +// Copyright 2024 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package envd + +import ( + "reflect" + "testing" + + "github.com/docker/docker/api/types/container" +) + +func TestDeviceRequests(t *testing.T) { + type args struct { + value string + } + tests := []struct { + name string + args args + want []container.DeviceRequest + wantErr bool + }{ + { + name: "device=1", + args: args{ + value: "device=1", + }, + want: []container.DeviceRequest{ + { + Count: 0, + DeviceIDs: []string{"1"}, + Driver: "nvidia", + Capabilities: [][]string{ + {"nvidia", "compute", "compat32", "graphics", "utility", "video", "display", "gpu"}}, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + { + name: "device=1,3", + args: args{ + value: "\"device=1,3\"", + }, + want: []container.DeviceRequest{ + { + Count: 0, + DeviceIDs: []string{"1", "3"}, + Driver: "nvidia", + Capabilities: [][]string{ + {"nvidia", "compute", "compat32", "graphics", "utility", "video", "display", "gpu"}}, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + { + name: "all", + args: args{ + value: "all", + }, + want: []container.DeviceRequest{ + { + Count: -1, + Driver: "nvidia", + Capabilities: [][]string{ + {"nvidia", "compute", "compat32", "graphics", "utility", "video", "display", "gpu"}}, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + { + name: "3", + args: args{ + value: "3", + }, + want: []container.DeviceRequest{ + { + Count: 3, + Driver: "nvidia", + Capabilities: [][]string{ + {"nvidia", "compute", "compat32", "graphics", "utility", "video", "display", "gpu"}}, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + { + name: "count=5", + args: args{ + value: "count=5", + }, + want: []container.DeviceRequest{ + { + Count: 5, + Driver: "nvidia", + Capabilities: [][]string{ + {"nvidia", "compute", "compat32", "graphics", "utility", "video", "display", "gpu"}}, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + { + name: "device=1,3 with driver", + args: args{ + value: "\"device=1,3\",\"driver=custom\"", + }, + want: []container.DeviceRequest{ + { + Count: 0, + DeviceIDs: []string{"1", "3"}, + Driver: "custom", + Capabilities: [][]string{ + {"nvidia", "compute", "compat32", "graphics", "utility", "video", "display", "gpu"}}, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + { + name: "device=1,3 with capabilities", + args: args{ + value: "\"device=1,3\",\"capabilities=nvidia\"", + }, + want: []container.DeviceRequest{ + { + Count: 0, + DeviceIDs: []string{"1", "3"}, + Driver: "nvidia", + Capabilities: [][]string{ + {"nvidia", "gpu"}, + }, + Options: make(map[string]string), + }, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := deviceRequests(tt.args.value) + if (err != nil) != tt.wantErr { + t.Errorf("deviceRequests() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("deviceRequests() got = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/pkg/envd/types.go b/pkg/envd/types.go index 8f12ad553..ce5fc0307 100644 --- a/pkg/envd/types.go +++ b/pkg/envd/types.go @@ -38,6 +38,7 @@ type StartOptions struct { EnvironmentName string BuildContext string NumGPU int + GPUSet string NumCPU string CPUSet string NumMem string From b8dfa15c3771da14ec781825c3dc0eb0d2339feb Mon Sep 17 00:00:00 2001 From: "allcontributors[bot]" <46447321+allcontributors[bot]@users.noreply.github.com> Date: Mon, 11 Mar 2024 18:45:57 +0800 Subject: [PATCH 293/355] docs: add arugal as a contributor for code (#1862) * docs: update README.md [skip ci] * docs: update .all-contributorsrc [skip ci] --------- Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com> --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index c7d6a3cd4..efef0367b 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -628,6 +628,15 @@ "contributions": [ "code" ] + }, + { + "login": "arugal", + "name": "zhang-wei", + "avatar_url": "https://avatars.githubusercontent.com/u/26432832?v=4", + "profile": "http://blogs.zhangwei.asia", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 0aa00be56..4d6b0151c 100644 --- a/README.md +++ b/README.md @@ -373,9 +373,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d <td align="center" valign="top" width="14.28%"><a href="https://github.com/xieydd"><img src="https://avatars.githubusercontent.com/u/20329697?v=4?s=70" width="70px;" alt="xieydd"/><br /><sub><b>xieydd</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xieydd" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://github.com/xing0821"><img src="https://avatars.githubusercontent.com/u/54933318?v=4?s=70" width="70px;" alt="xing0821"/><br /><sub><b>xing0821</b></sub></a><br /><a href="#ideas-xing0821" title="Ideas, Planning, & Feedback">🤔</a> <a href="#userTesting-xing0821" title="User Testing">📓</a> <a href="https://github.com/tensorchord/envd/commits?author=xing0821" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://xxchan.github.io"><img src="https://avatars.githubusercontent.com/u/37948597?v=4?s=70" width="70px;" alt="xxchan"/><br /><sub><b>xxchan</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=xxchan" title="Documentation">📖</a></td> - <td align="center" valign="top" width="14.28%"><a href="https://github.com/zhyon404"><img src="https://avatars.githubusercontent.com/u/32242529?v=4?s=70" width="70px;" alt="zhyon404"/><br /><sub><b>zhyon404</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=zhyon404" title="Code">💻</a></td> + <td align="center" valign="top" width="14.28%"><a href="http://blogs.zhangwei.asia"><img src="https://avatars.githubusercontent.com/u/26432832?v=4?s=70" width="70px;" alt="zhang-wei"/><br /><sub><b>zhang-wei</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=arugal" title="Code">💻</a></td> </tr> <tr> + <td align="center" valign="top" width="14.28%"><a href="https://github.com/zhyon404"><img src="https://avatars.githubusercontent.com/u/32242529?v=4?s=70" width="70px;" alt="zhyon404"/><br /><sub><b>zhyon404</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=zhyon404" title="Code">💻</a></td> <td align="center" valign="top" width="14.28%"><a href="https://www.homeboyc.cn/"><img src="https://avatars.githubusercontent.com/u/22193008?v=4?s=70" width="70px;" alt="杨成锴"/><br /><sub><b>杨成锴</b></sub></a><br /><a href="https://github.com/tensorchord/envd/commits?author=asjdf" title="Code">💻</a></td> </tr> </tbody> From dfa017b74889de8a30c2327ee07d6bf591f13aa5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 12 Mar 2024 20:00:02 +0800 Subject: [PATCH 294/355] chore: use go stable version (#1863) * chore: use go stable version Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix makefile go test file dir error Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 16 ++++++++-------- .github/workflows/nightly.yml | 20 +++++++++---------- .github/workflows/release.yml | 2 +- Makefile | 2 +- go.mod | 20 +++++++++---------- go.sum | 36 +++++++++++++++++++++++++++++++++++ 6 files changed, 66 insertions(+), 30 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 0dab4f517..65e40e002 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -38,7 +38,7 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - uses: actions/checkout@v4 - name: Cache Go modules uses: actions/cache@preview @@ -75,7 +75,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -111,7 +111,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -147,7 +147,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19.10 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -183,7 +183,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -219,7 +219,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -255,7 +255,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -283,7 +283,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Install bins run: | go install github.com/mattn/goveralls@latest diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index ad7d77ed5..93d77c62f 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -18,7 +18,7 @@ jobs: steps: - uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - uses: actions/checkout@v4 - name: Cache Go modules uses: actions/cache@preview @@ -56,7 +56,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -93,7 +93,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -130,7 +130,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -165,7 +165,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Install bins run: | go install github.com/mattn/goveralls@latest @@ -204,7 +204,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -232,7 +232,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -269,7 +269,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19.10 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -306,7 +306,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: @@ -343,7 +343,7 @@ jobs: - name: Setup Go uses: actions/setup-go@v5 with: - go-version: 1.19 + go-version: 'stable' - name: Cache Go modules uses: actions/cache@preview with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a5b5e4591..742c64591 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.19.10 + go-version: 'stable' - name: Docker Login uses: docker/login-action@v3 with: diff --git a/Makefile b/Makefile index b66f39cd2..bec75617b 100644 --- a/Makefile +++ b/Makefile @@ -176,7 +176,7 @@ test-local: @go test -v -race -coverprofile=coverage.out ./... test: generate ## Run the tests - @go test -race -coverpkg=./pkg/... -coverprofile=coverage.out $(shell go list ./... | grep -v e2e) + @go test -race -coverpkg=./pkg/... -coverprofile=coverage.out ./pkg/... @go tool cover -func coverage.out | tail -n 1 | awk '{ print "Total coverage: " $$3 }' e2e-test: diff --git a/go.mod b/go.mod index a8d67bb22..608dc0c52 100644 --- a/go.mod +++ b/go.mod @@ -27,8 +27,8 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.12.1 - github.com/onsi/gomega v1.27.10 + github.com/onsi/ginkgo/v2 v2.16.0 + github.com/onsi/gomega v1.30.0 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 @@ -44,9 +44,9 @@ require ( github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.17.0 - golang.org/x/sync v0.3.0 - golang.org/x/term v0.15.0 + golang.org/x/crypto v0.18.0 + golang.org/x/sync v0.6.0 + golang.org/x/term v0.16.0 golang.org/x/time v0.3.0 ) @@ -87,7 +87,7 @@ require ( github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect - github.com/go-logr/logr v1.2.4 // indirect + github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect @@ -187,12 +187,12 @@ require ( go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 // indirect - golang.org/x/mod v0.12.0 // indirect - golang.org/x/net v0.19.0 // indirect + golang.org/x/mod v0.14.0 // indirect + golang.org/x/net v0.20.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.15.0 // indirect + golang.org/x/sys v0.16.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.13.0 // indirect + golang.org/x/tools v0.17.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/go.sum b/go.sum index b7d1814c6..5cc3badc1 100644 --- a/go.sum +++ b/go.sum @@ -203,6 +203,7 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -240,6 +241,7 @@ github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FD github.com/charmbracelet/lipgloss v0.8.0 h1:IS00fk4XAHcf8uZKc3eHeMUTCxUH6NkaTrdyCQk84RU= github.com/charmbracelet/lipgloss v0.8.0/go.mod h1:p4eYUZZJ/0oXTuCQKFF8mqyKCz0ja6y+7DniDDw5KKU= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -260,12 +262,14 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -335,6 +339,7 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= @@ -350,6 +355,7 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -382,8 +388,11 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -399,6 +408,7 @@ github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6x github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= @@ -665,12 +675,16 @@ github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042 github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= github.com/onsi/ginkgo/v2 v2.12.1 h1:uHNEO1RP2SpuZApSkel9nEh1/Mu+hmQe7Q+Pepg5OYA= github.com/onsi/ginkgo/v2 v2.12.1/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= +github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= +github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -702,6 +716,7 @@ github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7c github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= @@ -735,9 +750,11 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= @@ -824,12 +841,17 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -856,6 +878,7 @@ go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= @@ -887,6 +910,8 @@ golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2Uz golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= +golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -928,6 +953,7 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91 golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -987,6 +1013,8 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1031,6 +1059,8 @@ golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1129,6 +1159,8 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1139,6 +1171,8 @@ golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= +golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1220,6 +1254,8 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= +golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 07ff34751858a0efbd44a948f01f57e17e6e2b4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:25:21 +0800 Subject: [PATCH 295/355] chore(deps): bump google.golang.org/protobuf from 1.31.0 to 1.33.0 (#1864) Bumps google.golang.org/protobuf from 1.31.0 to 1.33.0. --- updated-dependencies: - dependency-name: google.golang.org/protobuf dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 42 +++--------------------------------------- 2 files changed, 4 insertions(+), 40 deletions(-) diff --git a/go.mod b/go.mod index 608dc0c52..6a85d9486 100644 --- a/go.mod +++ b/go.mod @@ -198,7 +198,7 @@ require ( google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.56.3 // indirect - google.golang.org/protobuf v1.31.0 // indirect + google.golang.org/protobuf v1.33.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 5cc3badc1..219d17241 100644 --- a/go.sum +++ b/go.sum @@ -203,7 +203,6 @@ github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -241,7 +240,6 @@ github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FD github.com/charmbracelet/lipgloss v0.8.0 h1:IS00fk4XAHcf8uZKc3eHeMUTCxUH6NkaTrdyCQk84RU= github.com/charmbracelet/lipgloss v0.8.0/go.mod h1:p4eYUZZJ/0oXTuCQKFF8mqyKCz0ja6y+7DniDDw5KKU= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= @@ -262,14 +260,12 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/cockroachdb/datadriven v1.0.2/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= -github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -339,7 +335,6 @@ github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= @@ -355,7 +350,6 @@ github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go. github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -386,13 +380,10 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -408,7 +399,6 @@ github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6x github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/gogo/status v1.1.0/go.mod h1:BFv9nrluPLmrS0EmGVvLaPNmRosr9KapBYd5/hpY1WM= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= @@ -673,16 +663,12 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.12.1 h1:uHNEO1RP2SpuZApSkel9nEh1/Mu+hmQe7Q+Pepg5OYA= -github.com/onsi/ginkgo/v2 v2.12.1/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= @@ -716,7 +702,6 @@ github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7c github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= -github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= @@ -750,11 +735,9 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= @@ -841,17 +824,12 @@ github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= -github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= -github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -878,7 +856,6 @@ go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= -go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= @@ -908,8 +885,6 @@ golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0 golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -951,8 +926,7 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1011,8 +985,6 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1057,8 +1029,6 @@ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1157,8 +1127,6 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1169,8 +1137,6 @@ golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1252,8 +1218,6 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.13.0 h1:Iey4qkscZuv0VvIt8E0neZjtPVQFSc870HQ448QgEmQ= -golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1484,8 +1448,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= -google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From fdd9a08e97c3af7f90a3de70494f0fd6c1b4ec9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 11:49:24 +0800 Subject: [PATCH 296/355] chore(deps): bump pypa/cibuildwheel from 2.16.5 to 2.17.0 (#1866) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.16.5 to 2.17.0. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.16.5...v2.17.0) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 742c64591..7933b8400 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.16.5 + uses: pypa/cibuildwheel@v2.17.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 7e1c34b9337ec4e98e74ff2239d55d8d4a2860de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 15:23:37 +0800 Subject: [PATCH 297/355] chore(deps): bump pypa/cibuildwheel from 2.17.0 to 2.18.0 (#1883) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.17.0 to 2.18.0. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.17.0...v2.18.0) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7933b8400..fc649c87d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.17.0 + uses: pypa/cibuildwheel@v2.18.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 919019c872ba68b5798d64e9aa48ba0a5a23dc24 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 15:26:28 +0800 Subject: [PATCH 298/355] chore(deps): bump golangci/golangci-lint-action from 4 to 6 (#1882) Bumps [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action) from 4 to 6. - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v4...v6) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- .github/workflows/nightly.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 65e40e002..ee352cf91 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -54,7 +54,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v6 with: args: --timeout=5m version: latest diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 93d77c62f..d8a648456 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -34,7 +34,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v6 with: args: --timeout=5m version: latest From afdf64fbbeb84cbacc35caed1041dccd471635e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:47:23 +0800 Subject: [PATCH 299/355] chore(deps): bump pypa/cibuildwheel from 2.18.0 to 2.18.1 (#1890) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.18.0 to 2.18.1. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.18.0...v2.18.1) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fc649c87d..9ba17c0ca 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.18.0 + uses: pypa/cibuildwheel@v2.18.1 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 921fc7f078475fc6a2065cb4e5f2fb4c5339286d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 10:25:34 +0800 Subject: [PATCH 300/355] chore(deps): bump pypa/cibuildwheel from 2.18.1 to 2.19.2 (#1905) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.18.1 to 2.19.2. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.18.1...v2.19.2) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9ba17c0ca..c281492bf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.18.1 + uses: pypa/cibuildwheel@v2.19.2 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 50740076e4f74c076329be6ccdf937f395fae07c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 10:25:57 +0800 Subject: [PATCH 301/355] chore(deps): bump docker/build-push-action from 5 to 6 (#1900) Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5 to 6. - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v5...v6) --- updated-dependencies: - dependency-name: docker/build-push-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c281492bf..0a4982bfa 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -133,7 +133,7 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Build and push - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 with: push: true file: base-images/envd-starship/envd-starship.Dockerfile From 1dc32916defe1e3f0d82682bb81619a1ff19ef81 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 10:27:37 +0800 Subject: [PATCH 302/355] chore(deps): bump github.com/hashicorp/go-getter from 1.7.3 to 1.7.5 (#1902) Bumps [github.com/hashicorp/go-getter](https://github.com/hashicorp/go-getter) from 1.7.3 to 1.7.5. - [Release notes](https://github.com/hashicorp/go-getter/releases) - [Changelog](https://github.com/hashicorp/go-getter/blob/main/.goreleaser.yml) - [Commits](https://github.com/hashicorp/go-getter/compare/v1.7.3...v1.7.5) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-getter dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 6a85d9486..f8b2be372 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/go-git/go-git/v5 v5.11.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.1 - github.com/hashicorp/go-getter v1.7.3 + github.com/hashicorp/go-getter v1.7.5 github.com/mattn/go-isatty v0.0.19 github.com/moby/buildkit v0.11.6 github.com/moby/term v0.5.0 diff --git a/go.sum b/go.sum index 219d17241..5f492dd35 100644 --- a/go.sum +++ b/go.sum @@ -524,8 +524,8 @@ github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.3 h1:bN2+Fw9XPFvOCjB0UOevFIMICZ7G2XSQHzfvLUyOM5E= -github.com/hashicorp/go-getter v1.7.3/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= +github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= From 812de3622975c7244d7b9b6d1e939b355f35009d Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 8 Jan 2025 18:41:44 +0800 Subject: [PATCH 303/355] fix(cve): go-get & x/crypto (#1934) * fix(cve): go-get & x/crypto Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix typo Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix golangci-lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .golangci.yml | 2 +- go.mod | 51 +++++------ go.sum | 144 ++++++++++++++++-------------- pkg/lang/ir/v0/compile.go | 4 +- pkg/lang/ir/v1/compile.go | 4 +- pkg/progress/compileui/display.go | 8 +- pkg/syncthing/device.go | 2 +- 7 files changed, 113 insertions(+), 102 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 8e4d55f30..2535381fe 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -3,7 +3,7 @@ linters: - bodyclose - errcheck - errorlint - - exportloopref + - copyloopvar - gofmt - goimports - gosimple diff --git a/go.mod b/go.mod index f8b2be372..a50bb74a7 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/tensorchord/envd -go 1.19 +go 1.22.0 + +toolchain go1.23.4 require ( github.com/Pallinder/go-randomdata v1.2.0 @@ -17,8 +19,8 @@ require ( github.com/docker/go-connections v0.4.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 - github.com/gliderlabs/ssh v0.3.5 - github.com/go-git/go-git/v5 v5.11.0 + github.com/gliderlabs/ssh v0.3.8 + github.com/go-git/go-git/v5 v5.13.1 github.com/golang/mock v1.6.0 github.com/google/uuid v1.3.1 github.com/hashicorp/go-getter v1.7.5 @@ -27,8 +29,8 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.16.0 - github.com/onsi/gomega v1.30.0 + github.com/onsi/ginkgo/v2 v2.19.0 + github.com/onsi/gomega v1.34.1 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b github.com/pkg/errors v0.9.1 @@ -37,16 +39,16 @@ require ( github.com/segmentio/analytics-go/v3 v3.2.1 github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.16.0 - github.com/stretchr/testify v1.8.4 + github.com/stretchr/testify v1.10.0 github.com/syncthing/syncthing v1.23.7 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.18.0 - golang.org/x/sync v0.6.0 - golang.org/x/term v0.16.0 + golang.org/x/crypto v0.32.0 + golang.org/x/sync v0.10.0 + golang.org/x/term v0.28.0 golang.org/x/time v0.3.0 ) @@ -60,8 +62,8 @@ require ( github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.3.2 // indirect - github.com/Microsoft/go-winio v0.6.1 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect + github.com/Microsoft/go-winio v0.6.2 // indirect + github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect github.com/aws/aws-sdk-go v1.44.122 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect @@ -78,7 +80,7 @@ require ( github.com/containers/ocicrypt v1.1.7 // indirect github.com/containers/storage v1.46.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/cyphar/filepath-securejoin v0.2.4 // indirect + github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect @@ -86,11 +88,11 @@ require ( github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.5.0 // indirect + github.com/go-git/go-billy/v5 v5.6.1 // indirect github.com/go-logr/logr v1.4.1 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gofrs/flock v0.8.1 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect @@ -98,7 +100,7 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect + github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect github.com/google/s2a-go v0.1.3 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect @@ -156,13 +158,13 @@ require ( github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.4 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect + github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/segmentio/backo-go v1.0.0 // indirect - github.com/sergi/go-diff v1.1.0 // indirect + github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shirou/gopsutil/v3 v3.23.6 // indirect - github.com/skeema/knownhosts v1.2.1 // indirect + github.com/skeema/knownhosts v1.3.0 // indirect github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect @@ -186,19 +188,18 @@ require ( go.opentelemetry.io/otel/sdk v1.14.0 // indirect go.opentelemetry.io/otel/trace v1.14.0 // indirect go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/net v0.20.0 // indirect + golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + golang.org/x/net v0.34.0 // indirect golang.org/x/oauth2 v0.7.0 // indirect - golang.org/x/sys v0.16.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.17.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/text v0.21.0 // indirect + golang.org/x/tools v0.29.0 // indirect golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect google.golang.org/api v0.122.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect google.golang.org/grpc v1.56.3 // indirect - google.golang.org/protobuf v1.33.0 // indirect + google.golang.org/protobuf v1.34.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 5f492dd35..41454ac41 100644 --- a/go.sum +++ b/go.sum @@ -119,6 +119,7 @@ cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQn cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -195,6 +196,7 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -206,19 +208,21 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= +github.com/Microsoft/hcsshim v0.10.0-rc.8/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 h1:kkhsdkhsCvIsutKu5zLMgWtgh9YxGCNAw8Ad8hjwfYg= -github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= +github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= @@ -230,7 +234,6 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= @@ -247,7 +250,6 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= @@ -260,6 +262,7 @@ github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= @@ -268,6 +271,7 @@ github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwP github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= @@ -282,10 +286,13 @@ github.com/containerd/continuity v0.4.1 h1:wQnVrjIyQ8vhU2sgOiL5T07jo+ouqc2bnKsv5 github.com/containerd/continuity v0.4.1/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= +github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= +github.com/containerd/nydus-snapshotter v0.3.1/go.mod h1:+8R7NX7vrjlxAgtidnsstwIhpzyTlriYPssTxH++uiM= github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= +github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= @@ -313,9 +320,10 @@ github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= -github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= +github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -331,11 +339,13 @@ github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNk github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU= +github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= +github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -349,9 +359,11 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= @@ -364,16 +376,18 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= -github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY= -github.com/gliderlabs/ssh v0.3.5/go.mod h1:8XB4KraRrX39qHhT6yxPsHedjA08I/uBVwj4xC+/+z4= +github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= +github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= -github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow= +github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= +github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= -github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4= -github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY= +github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= +github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= +github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -388,8 +402,8 @@ github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= @@ -402,6 +416,7 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -465,6 +480,7 @@ github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIG github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -481,8 +497,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= +github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= @@ -542,6 +558,7 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= +github.com/in-toto/in-toto-golang v0.5.0/go.mod h1:/Rq0IZHLV7Ku5gielPT4wPHJfH1GdHMCq8+WPxw8/BE= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= @@ -627,6 +644,7 @@ github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2J github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= +github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -663,14 +681,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.16.0 h1:7q1w9frJDzninhXxjZd+Y/x54XNjG/UlRLIYPZafsPM= -github.com/onsi/ginkgo/v2 v2.16.0/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= +github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= +github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8= -github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= +github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= +github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -691,9 +709,12 @@ github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0 github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= +github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= +github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= @@ -702,6 +723,7 @@ github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7c github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= @@ -721,6 +743,7 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= +github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= @@ -728,8 +751,8 @@ github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= +github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -739,13 +762,15 @@ github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iH github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= +github.com/secure-systems-lab/go-securesystemslib v0.4.0/go.mod h1:FGBZgq2tXWICsxWQW1msNf49F0Pf2Op5Htayx335Qbs= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= github.com/segmentio/backo-go v1.0.0 h1:kbOAtGJY2DqOR0jfRkYEorx/b18RgtepGtY3+Cpe6qA= github.com/segmentio/backo-go v1.0.0/go.mod h1:kJ9mm9YmoWSkk+oQ+5Cj8DEoRCX2JT6As4kEtIIOp1M= -github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= -github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= +github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= github.com/shirou/gopsutil/v3 v3.23.6 h1:5y46WPI9QBKBbK7EEccUPNXpJpNrvPuTD0O2zHEHT08= github.com/shirou/gopsutil/v3 v3.23.6/go.mod h1:j7QX50DrXYggrpN30W0Mo+I4/8U2UUIQrnrhqUeWrAU= github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= @@ -759,10 +784,11 @@ github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ= -github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= +github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= +github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ= +github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f/go.mod h1:VHzvNsKAfAGqs4ZvwRL+7a0dNsL20s7lGui4K9C0xQM= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= @@ -792,8 +818,9 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= @@ -881,12 +908,9 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc= -golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -897,8 +921,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20230711023510-fffb14384f22 h1:FqrVOBQxQ8r/UwwXibI0KMolVhvFiGobSfdE33deHJM= -golang.org/x/exp v0.0.0-20230711023510-fffb14384f22/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= +golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -925,9 +949,6 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -978,15 +999,11 @@ golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= -golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= -golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= -golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1028,9 +1045,8 @@ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1118,27 +1134,22 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= -golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.0.0-20220722155259-a9ba230a4035/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE= -golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1150,10 +1161,8 @@ golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1217,9 +1226,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1448,12 +1456,13 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= +google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -1480,6 +1489,7 @@ gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81 gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= +gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go index fa05db708..176d6d4d4 100644 --- a/pkg/lang/ir/v0/compile.go +++ b/pkg/lang/ir/v0/compile.go @@ -215,7 +215,7 @@ func (g generalGraph) Labels() (map[string]string, error) { }) } - if g.RuntimeExpose != nil && len(g.RuntimeExpose) > 0 { + if len(g.RuntimeExpose) > 0 { for _, item := range g.RuntimeExpose { ports = append(ports, servertypes.EnvironmentPort{ Name: item.ServiceName, @@ -256,7 +256,7 @@ func (g generalGraph) ExposedPorts() (map[string]struct{}, error) { ports[fmt.Sprintf("%d/tcp", config.RStudioServerPortInContainer)] = struct{}{} } - if g.RuntimeExpose != nil && len(g.RuntimeExpose) > 0 { + if len(g.RuntimeExpose) > 0 { for _, item := range g.RuntimeExpose { ports[fmt.Sprintf("%d/tcp", item.EnvdPort)] = struct{}{} } diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 94331ce33..3b0481383 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -232,7 +232,7 @@ func (g generalGraph) Labels() (map[string]string, error) { }) } - if g.RuntimeExpose != nil && len(g.RuntimeExpose) > 0 { + if len(g.RuntimeExpose) > 0 { for _, item := range g.RuntimeExpose { ports = append(ports, servertypes.EnvironmentPort{ Name: item.ServiceName, @@ -273,7 +273,7 @@ func (g generalGraph) ExposedPorts() (map[string]struct{}, error) { ports[fmt.Sprintf("%d/tcp", config.RStudioServerPortInContainer)] = struct{}{} } - if g.RuntimeExpose != nil && len(g.RuntimeExpose) > 0 { + if len(g.RuntimeExpose) > 0 { for _, item := range g.RuntimeExpose { ports[fmt.Sprintf("%d/tcp", item.EnvdPort)] = struct{}{} } diff --git a/pkg/progress/compileui/display.go b/pkg/progress/compileui/display.go index 66dbe31f5..1faf1fc28 100644 --- a/pkg/progress/compileui/display.go +++ b/pkg/progress/compileui/display.go @@ -41,7 +41,7 @@ type generalWriter struct { phase string trace *trace doneCh chan bool - repeatd bool + repeated bool result *Result lineCount int } @@ -72,7 +72,7 @@ func New(ctx context.Context, out console.File, mode string) (Writer, error) { phase: "parse build.envd and download/cache dependencies", trace: t, doneCh: make(chan bool), - repeatd: false, + repeated: false, result: &Result{ plugins: make([]*PluginInfo, 0), }, @@ -155,10 +155,10 @@ func (w *generalWriter) run(ctx context.Context) error { func (w *generalWriter) output(finished bool) { width, _ := w.getSize() b := aec.EmptyBuilder.Up(uint(1 + w.lineCount)) - if !w.repeatd { + if !w.repeated { b = b.Down(1) } - w.repeatd = true + w.repeated = true if finished { fmt.Fprint(w.console, colorRun) } diff --git a/pkg/syncthing/device.go b/pkg/syncthing/device.go index b81005827..fbc407864 100644 --- a/pkg/syncthing/device.go +++ b/pkg/syncthing/device.go @@ -52,7 +52,7 @@ func ConnectDevices(s1 *Syncthing, s2 *Syncthing) error { // This method can only be called when the devices are not connected func (s *Syncthing) SetDeviceAddress(addr string) (err error) { - if s.Config.Devices == nil || len(s.Config.Devices) == 0 { + if len(s.Config.Devices) == 0 { return fmt.Errorf("no devices found") } s.DeviceAddress = addr From c504c66e389c6a3bfc57686b5a47d550f3853125 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 8 Jan 2025 20:31:38 +0800 Subject: [PATCH 304/355] feat(ci): adopt ruff & lychee (#1935) * feat(ci): adopt ruff & lychee Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix typo Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/envd-lint.yml | 2 +- .github/workflows/link-check.yml | 21 ++++++------ .gitignore | 3 ++ .lycheeignore | 7 ++++ .markdown-lint.json | 7 ---- Makefile | 13 ++++---- .../language/testdata/python/conda/setup.py | 2 +- .../testdata/python/requirements/setup.py | 2 +- .../language/testdata/python/conda/setup.py | 2 +- .../testdata/python/requirements/setup.py | 2 +- envd/api/v0/config.py | 2 +- envd/api/v0/io.py | 1 - envd/api/v0/runtime.py | 2 +- envd/api/v1/install.py | 32 ++++++++++--------- envd/api/v1/runtime.py | 2 +- examples/dgl/train.py | 16 ++++------ examples/llm-inference/8bit.py | 3 +- examples/llm-inference/main.py | 1 - examples/mnist/main.py | 7 ++-- examples/mnist/mnist.ipynb | 7 ++-- examples/pytorch-profiler/main.py | 2 +- examples/pytorch2/main.py | 2 +- examples/resnet-serving-v1/client.py | 4 ++- examples/resnet-serving-v1/main.py | 5 ++- examples/stable-diffusion/README.md | 2 +- examples/stable-diffusion/main.py | 3 +- examples/streamlit-mnist/app.py | 5 ++- examples/streamlit-mnist/train.ipynb | 4 +-- lychee.toml | 4 +++ pyproject.toml | 9 ++++++ setup.py | 11 +++---- 31 files changed, 99 insertions(+), 86 deletions(-) create mode 100644 .lycheeignore delete mode 100644 .markdown-lint.json create mode 100644 lychee.toml diff --git a/.github/workflows/envd-lint.yml b/.github/workflows/envd-lint.yml index bcc80be06..ff7d31edf 100644 --- a/.github/workflows/envd-lint.yml +++ b/.github/workflows/envd-lint.yml @@ -31,6 +31,6 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: - python-version: 3.8 + python-version: 3.12 - name: Lint run: make envd-lint diff --git a/.github/workflows/link-check.yml b/.github/workflows/link-check.yml index 1cfab5b7f..1b6ac8238 100644 --- a/.github/workflows/link-check.yml +++ b/.github/workflows/link-check.yml @@ -1,26 +1,27 @@ -name: documentation-check +name: Link check on: push: branches: - main paths: - - ".github/workflows/**" + - ".github/workflows/link-check.yml" - "**.md" pull_request: paths: - - ".github/workflows/**" + - ".github/workflows/link-check.yml" - "**.md" + workflow_dispatch: jobs: - markdown-link-check: + linkChecker: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - uses: gaurav-nelson/github-action-markdown-link-check@v1 + + - name: Link Checker + id: lychee + uses: lycheeverse/lychee-action@v2 with: - file-path: "README.md" - folder-path: "docs" - check-modified-files-only: yes - base-branch: main - config-file: .markdown-lint.json + fail: true + args: --verbose --no-progress --format detailed . diff --git a/.gitignore b/.gitignore index 82056c4d9..ba8962223 100644 --- a/.gitignore +++ b/.gitignore @@ -69,3 +69,6 @@ MANIFEST .GIT_TAG_INFO test.tar + +# ruff +.ruff_cache/ diff --git a/.lycheeignore b/.lycheeignore new file mode 100644 index 000000000..b8d629203 --- /dev/null +++ b/.lycheeignore @@ -0,0 +1,7 @@ +# blog no longer exists +https://www.iam.rw/ +http://lizheming.top/ +https://bandism.net/ +https://blog.thrimbda.com/ +# github disappeared (rename?) +https://github.com/yczheng0 diff --git a/.markdown-lint.json b/.markdown-lint.json deleted file mode 100644 index 231809a08..000000000 --- a/.markdown-lint.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "ignorePatterns": [ - { - "pattern": "^http://localhost.*" - }, - ] -} \ No newline at end of file diff --git a/Makefile b/Makefile index bec75617b..1a3ac5319 100644 --- a/Makefile +++ b/Makefile @@ -254,11 +254,12 @@ fmt: ## Run go fmt against code. vet: ## Run go vet against code. go vet ./... -black-install: - @pip install -q black[jupyter] +ruff-install: + @pip install -q ruff -envd-lint: black-install - black --check --include '(\.envd|\.py|\.ipynb)$$' . +envd-lint: ruff-install + @ruff check . -envd-fmt: black-install - black --include '(\.envd|\.py|\.ipynb)$$' . +envd-fmt: ruff-install + @ruff format . + @ruff check --fix . diff --git a/e2e/v0/language/testdata/python/conda/setup.py b/e2e/v0/language/testdata/python/conda/setup.py index 0be13a508..d69175316 100644 --- a/e2e/v0/language/testdata/python/conda/setup.py +++ b/e2e/v0/language/testdata/python/conda/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="envd_e2e_conda_test", diff --git a/e2e/v0/language/testdata/python/requirements/setup.py b/e2e/v0/language/testdata/python/requirements/setup.py index 0be13a508..d69175316 100644 --- a/e2e/v0/language/testdata/python/requirements/setup.py +++ b/e2e/v0/language/testdata/python/requirements/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="envd_e2e_conda_test", diff --git a/e2e/v1/language/testdata/python/conda/setup.py b/e2e/v1/language/testdata/python/conda/setup.py index 0be13a508..d69175316 100644 --- a/e2e/v1/language/testdata/python/conda/setup.py +++ b/e2e/v1/language/testdata/python/conda/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="envd_e2e_conda_test", diff --git a/e2e/v1/language/testdata/python/requirements/setup.py b/e2e/v1/language/testdata/python/requirements/setup.py index 0be13a508..d69175316 100644 --- a/e2e/v1/language/testdata/python/requirements/setup.py +++ b/e2e/v1/language/testdata/python/requirements/setup.py @@ -1,4 +1,4 @@ -from setuptools import setup, find_packages +from setuptools import find_packages, setup setup( name="envd_e2e_conda_test", diff --git a/envd/api/v0/config.py b/envd/api/v0/config.py index dda6bfa31..bc13b382c 100644 --- a/envd/api/v0/config.py +++ b/envd/api/v0/config.py @@ -21,7 +21,7 @@ ::: """ -from typing import Optional, List +from typing import List, Optional def apt_source(source: Optional[str]): diff --git a/envd/api/v0/io.py b/envd/api/v0/io.py index fd47b73cf..8c1ac67b5 100644 --- a/envd/api/v0/io.py +++ b/envd/api/v0/io.py @@ -21,7 +21,6 @@ ::: """ - from typing import Optional diff --git a/envd/api/v0/runtime.py b/envd/api/v0/runtime.py index ed08191b4..081ab2bcd 100644 --- a/envd/api/v0/runtime.py +++ b/envd/api/v0/runtime.py @@ -21,7 +21,7 @@ ::: """ -from typing import Dict, Optional, List +from typing import Dict, List, Optional def command(commands: Dict[str, str]): diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index b1790474f..ba4eb19a8 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -27,7 +27,7 @@ ::: """ -from typing import List, Optional +from typing import Optional, Sequence def python(version: str = "3.9"): @@ -57,59 +57,61 @@ def julia(): """Install Julia.""" -def apt_packages(name: List[str] = []): +def apt_packages(name: Sequence[str] = ()): """Install package using the system package manager (apt on Ubuntu). Args: - name (List[str]): apt package name list + name (Sequence[str]): apt package name list """ def python_packages( - name: List[str] = [], requirements: str = "", local_wheels: List[str] = [] + name: Sequence[str] = (), requirements: str = "", local_wheels: Sequence[str] = () ): """Install python package by pip. Args: - name (List[str]): package name list + name (Sequence[str]): package name list requirements (str): requirements file path - local_wheels (List[str]): local wheels + local_wheels (Sequence[str]): local wheels (wheel files should be placed under the current directory) """ -def conda_packages(name: List[str] = [], channel: List[str] = [], env_file: str = ""): +def conda_packages( + name: Sequence[str] = (), channel: Sequence[str] = (), env_file: str = "" +): """Install python package by Conda Args: - name (List[str]): List of package names with optional version assignment, + name (Sequence[str]): List of package names with optional version assignment, such as ['pytorch', 'tensorflow==1.13.0'] - channel (List[str]): additional channels + channel (Sequence[str]): additional channels env_file (str): conda env file path """ -def r_packages(name: List[str]): +def r_packages(name: Sequence[str]): """Install R packages by R package manager. Args: - name (List[str]): package name list + name (Sequence[str]): package name list """ -def julia_packages(name: List[str]): +def julia_packages(name: Sequence[str]): """Install Julia packages. Args: - name (List[str]): List of Julia packages + name (Sequence[str]): List of Julia packages """ -def vscode_extensions(name: List[str]): +def vscode_extensions(name: Sequence[str]): """Install VS Code extensions Args: - name (List[str]): extension names, such as ['ms-python.python'] + name (Sequence[str]): extension names, such as ['ms-python.python'] """ diff --git a/envd/api/v1/runtime.py b/envd/api/v1/runtime.py index bfed56f47..b38648da2 100644 --- a/envd/api/v1/runtime.py +++ b/envd/api/v1/runtime.py @@ -27,7 +27,7 @@ ::: """ -from typing import List, Optional, Dict +from typing import Dict, List, Optional def command(commands: Dict[str, str]): diff --git a/examples/dgl/train.py b/examples/dgl/train.py index d707c3c4f..f60326f42 100644 --- a/examples/dgl/train.py +++ b/examples/dgl/train.py @@ -13,13 +13,14 @@ # See the License for the specific language governing permissions and # limitations under the License. +import argparse + +import dgl.nn as dglnn import torch -import torch.nn as nn import torch.nn.functional as F -import dgl.nn as dglnn -from dgl.data import CoraGraphDataset, CiteseerGraphDataset, PubmedGraphDataset from dgl import AddSelfLoop -import argparse +from dgl.data import CiteseerGraphDataset, CoraGraphDataset, PubmedGraphDataset +from torch import nn class GAT(nn.Module): @@ -52,10 +53,7 @@ def forward(self, g, inputs): h = inputs for i, layer in enumerate(self.gat_layers): h = layer(g, h) - if i == 1: # last layer - h = h.mean(1) - else: # other layer(s) - h = h.flatten(1) + h = h.mean(1) if i == 1 else h.flatten(1) return h @@ -102,7 +100,7 @@ def train(g, features, labels, masks, model): help="Dataset name ('cora', 'citeseer', 'pubmed').", ) args = parser.parse_args() - print(f"Training with DGL built-in GATConv module.") + print("Training with DGL built-in GATConv module.") # load and preprocess dataset transform = ( diff --git a/examples/llm-inference/8bit.py b/examples/llm-inference/8bit.py index 03c3f6978..380f052f4 100644 --- a/examples/llm-inference/8bit.py +++ b/examples/llm-inference/8bit.py @@ -1,5 +1,4 @@ -from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed -from transformers import pipeline +from transformers import AutoModelForCausalLM, AutoTokenizer name = "bigscience/bloom-3b" text = "Hello my name is" diff --git a/examples/llm-inference/main.py b/examples/llm-inference/main.py index b7435ab1e..ee723d626 100644 --- a/examples/llm-inference/main.py +++ b/examples/llm-inference/main.py @@ -1,4 +1,3 @@ -from transformers import AutoModelForCausalLM, AutoTokenizer, set_seed from transformers import pipeline name = "bigscience/bloom-3b" diff --git a/examples/mnist/main.py b/examples/mnist/main.py index c462f5224..471ca5d76 100644 --- a/examples/mnist/main.py +++ b/examples/mnist/main.py @@ -6,13 +6,14 @@ # from https://github.com/pytorch/examples/blob/main/mnist/main.py from __future__ import print_function + import argparse + import torch -import torch.nn as nn import torch.nn.functional as F -import torch.optim as optim -from torchvision import datasets, transforms +from torch import nn, optim from torch.optim.lr_scheduler import StepLR +from torchvision import datasets, transforms class Net(nn.Module): diff --git a/examples/mnist/mnist.ipynb b/examples/mnist/mnist.ipynb index 189cd9e56..b2f819d91 100644 --- a/examples/mnist/mnist.ipynb +++ b/examples/mnist/mnist.ipynb @@ -8,13 +8,12 @@ "outputs": [], "source": [ "from __future__ import print_function\n", - "import argparse\n", + "\n", "import torch\n", - "import torch.nn as nn\n", "import torch.nn.functional as F\n", - "import torch.optim as optim\n", - "from torchvision import datasets, transforms\n", + "from torch import nn, optim\n", "from torch.optim.lr_scheduler import StepLR\n", + "from torchvision import datasets, transforms\n", "\n", "\n", "class Net(nn.Module):\n", diff --git a/examples/pytorch-profiler/main.py b/examples/pytorch-profiler/main.py index 1fca3e609..873e15b06 100644 --- a/examples/pytorch-profiler/main.py +++ b/examples/pytorch-profiler/main.py @@ -7,7 +7,7 @@ import torchvision.datasets import torchvision.models import torchvision.transforms as T -from torchvision.models import efficientnet_b0, EfficientNet_B0_Weights +from torchvision.models import EfficientNet_B0_Weights, efficientnet_b0 transform = T.Compose( [T.Resize(224), T.ToTensor(), T.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))] diff --git a/examples/pytorch2/main.py b/examples/pytorch2/main.py index 98eceb755..a29ae541e 100644 --- a/examples/pytorch2/main.py +++ b/examples/pytorch2/main.py @@ -7,7 +7,7 @@ import torchvision.datasets import torchvision.models import torchvision.transforms as T -from torchvision.models import efficientnet_b0, EfficientNet_B0_Weights +from torchvision.models import EfficientNet_B0_Weights, efficientnet_b0 transform = T.Compose( [T.Resize(224), T.ToTensor(), T.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))] diff --git a/examples/resnet-serving-v1/client.py b/examples/resnet-serving-v1/client.py index 685b70b0f..d8266c060 100644 --- a/examples/resnet-serving-v1/client.py +++ b/examples/resnet-serving-v1/client.py @@ -13,6 +13,8 @@ # limitations under the License. """Example: Sample Resnet client.""" +from http import HTTPStatus + import httpx import msgpack # type: ignore @@ -25,7 +27,7 @@ "http://localhost:8000/inference", data=msgpack.packb({"image": dog_bytes}), ) -if prediction.status_code == 200: +if prediction.status_code == HTTPStatus.OK: print(msgpack.unpackb(prediction.content)) else: print(prediction.status_code, prediction.content) diff --git a/examples/resnet-serving-v1/main.py b/examples/resnet-serving-v1/main.py index bce3564a0..628d50fa0 100644 --- a/examples/resnet-serving-v1/main.py +++ b/examples/resnet-serving-v1/main.py @@ -21,12 +21,11 @@ import numpy as np # type: ignore import torch # type: ignore import torchvision # type: ignore -from PIL import Image # type: ignore -from torchvision import transforms # type: ignore - from mosec import Server, Worker from mosec.errors import ValidationError from mosec.mixin import MsgpackMixin +from PIL import Image # type: ignore +from torchvision import transforms # type: ignore logger = logging.getLogger() logger.setLevel(logging.DEBUG) diff --git a/examples/stable-diffusion/README.md b/examples/stable-diffusion/README.md index 48e60e0c3..9357c4673 100644 --- a/examples/stable-diffusion/README.md +++ b/examples/stable-diffusion/README.md @@ -3,7 +3,7 @@ ## Requirements <ol> - <li><a href="https://huggingface.co/join">Sign up to Huggingface</a></li> + <li><a href="https://huggingface.co/login">Log In HuggingFace</a></li> <li><a href="https://huggingface.co/CompVis/stable-diffusion-v1-4">Accept the Stable Diffusion models agreement</a></li> <li><a href="https://huggingface.co/settings/tokens">Create an Access Token</a>. You’ll use it in the Python script below.</li> </ol> diff --git a/examples/stable-diffusion/main.py b/examples/stable-diffusion/main.py index 51c56a57a..409b3ed49 100644 --- a/examples/stable-diffusion/main.py +++ b/examples/stable-diffusion/main.py @@ -1,9 +1,8 @@ +import os import random import sys -import os from diffusers import StableDiffusionPipeline -import torch from torch import autocast device = "cuda" diff --git a/examples/streamlit-mnist/app.py b/examples/streamlit-mnist/app.py index f705e27b9..0b6be82e9 100644 --- a/examples/streamlit-mnist/app.py +++ b/examples/streamlit-mnist/app.py @@ -1,9 +1,8 @@ -import os -import numpy as np import cv2 -from tensorflow.keras.models import load_model +import numpy as np import streamlit as st from streamlit_drawable_canvas import st_canvas +from tensorflow.keras.models import load_model model = load_model("model") diff --git a/examples/streamlit-mnist/train.ipynb b/examples/streamlit-mnist/train.ipynb index 392531e9e..d4c7b7199 100644 --- a/examples/streamlit-mnist/train.ipynb +++ b/examples/streamlit-mnist/train.ipynb @@ -6,8 +6,8 @@ "metadata": {}, "outputs": [], "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "import numpy as np" ] }, { diff --git a/lychee.toml b/lychee.toml new file mode 100644 index 000000000..03c2c701f --- /dev/null +++ b/lychee.toml @@ -0,0 +1,4 @@ +scheme = [ "https", "http", "mailto" ] +exclude_loopback = true +exclude_path = ["CHANGELOG.md"] +accept = ["200..=204", "429", "500..=599"] diff --git a/pyproject.toml b/pyproject.toml index 9787c3bdf..57937ecff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,12 @@ [build-system] requires = ["setuptools", "wheel"] build-backend = "setuptools.build_meta" + +[tool.ruff] +target-version = "py312" +extend-include = ["*.envd"] +[tool.ruff.lint] +select = ["E", "F", "G", "B", "I", "SIM", "TID", "PL", "RUF"] +ignore = ["E501", "PLW2901", "F821"] +[tool.ruff.lint.pylint] +max-args = 7 diff --git a/setup.py b/setup.py index 495842103..51ef746ac 100644 --- a/setup.py +++ b/setup.py @@ -12,16 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. +import logging import os -from setuptools.command.sdist import sdist -from setuptools import setup, Extension, find_packages +import subprocess + +from setuptools import Extension, find_packages, setup from setuptools.command.build_ext import build_ext +from setuptools.command.sdist import sdist from wheel.bdist_wheel import bdist_wheel - -import subprocess -import logging - with open("README.md", "r", encoding="utf-8") as f: readme = f.read() From d7ef20df3444915a2b2793a9d6137caf01f3d3a2 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 8 Jan 2025 22:17:18 +0800 Subject: [PATCH 305/355] fix(cve): docker & buildkit (#1936) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 120 +++++++------ go.sum | 317 +++++++++++++++++----------------- pkg/app/debug_llb.go | 35 +--- pkg/app/image_prune.go | 4 +- pkg/app/image_prune_test.go | 6 +- pkg/app/prune.go | 6 +- pkg/autocomplete/zsh.go | 2 +- pkg/builder/build.go | 2 +- pkg/builder/util.go | 6 +- pkg/buildkitd/buildkitd.go | 14 +- pkg/buildkitd/mock/mock.go | 8 +- pkg/driver/client.go | 6 +- pkg/driver/docker/docker.go | 54 +++--- pkg/driver/nerdctl/nerdctl.go | 9 +- pkg/envd/docker.go | 30 ++-- pkg/envd/engine.go | 4 +- pkg/envd/envdserver.go | 6 +- pkg/lang/ir/v0/system.go | 8 +- pkg/types/envd.go | 8 +- 19 files changed, 327 insertions(+), 318 deletions(-) diff --git a/go.mod b/go.mod index a50bb74a7..f2d239ec7 100644 --- a/go.mod +++ b/go.mod @@ -10,29 +10,29 @@ require ( github.com/charmbracelet/bubbletea v0.24.2 github.com/charmbracelet/lipgloss v0.8.0 github.com/cockroachdb/errors v1.11.1 - github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 - github.com/containerd/containerd v1.7.3 + github.com/containerd/console v1.0.4 + github.com/containerd/containerd v1.7.24 github.com/containers/image/v5 v5.25.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v24.0.7+incompatible - github.com/docker/docker v24.0.7+incompatible - github.com/docker/go-connections v0.4.0 + github.com/docker/cli v27.4.0-rc.2+incompatible + github.com/docker/docker v27.4.0-rc.2+incompatible + github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 github.com/gliderlabs/ssh v0.3.8 github.com/go-git/go-git/v5 v5.13.1 github.com/golang/mock v1.6.0 - github.com/google/uuid v1.3.1 + github.com/google/uuid v1.6.0 github.com/hashicorp/go-getter v1.7.5 github.com/mattn/go-isatty v0.0.19 - github.com/moby/buildkit v0.11.6 + github.com/moby/buildkit v0.18.2 github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.19.0 github.com/onsi/gomega v1.34.1 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b + github.com/opencontainers/image-spec v1.1.0 github.com/pkg/errors v0.9.1 github.com/pkg/sftp v1.13.6 github.com/schollz/progressbar/v3 v3.13.1 @@ -43,23 +43,22 @@ require ( github.com/syncthing/syncthing v1.23.7 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea - github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f + github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab github.com/urfave/cli/v2 v2.25.7 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.32.0 golang.org/x/sync v0.10.0 golang.org/x/term v0.28.0 - golang.org/x/time v0.3.0 + golang.org/x/time v0.6.0 ) require ( - cloud.google.com/go v0.110.0 // indirect - cloud.google.com/go/compute v1.19.1 // indirect - cloud.google.com/go/compute/metadata v0.2.3 // indirect - cloud.google.com/go/iam v0.13.0 // indirect - cloud.google.com/go/storage v1.28.1 // indirect + cloud.google.com/go v0.112.0 // indirect + cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/iam v1.1.5 // indirect + cloud.google.com/go/storage v1.36.0 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/BurntSushi/toml v1.3.2 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect @@ -72,55 +71,59 @@ require ( github.com/cloudflare/circl v1.3.7 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/containerd/continuity v0.4.1 // indirect - github.com/containerd/ttrpc v1.2.2 // indirect - github.com/containerd/typeurl v1.0.2 // indirect - github.com/containerd/typeurl/v2 v2.1.1 // indirect + github.com/containerd/containerd/api v1.7.19 // indirect + github.com/containerd/continuity v0.4.5 // indirect + github.com/containerd/errdefs v0.3.0 // indirect + github.com/containerd/log v0.1.0 // indirect + github.com/containerd/platforms v0.2.1 // indirect + github.com/containerd/ttrpc v1.2.5 // indirect + github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect - github.com/containers/ocicrypt v1.1.7 // indirect + github.com/containers/ocicrypt v1.1.10 // indirect github.com/containers/storage v1.46.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/cyphar/filepath-securejoin v0.3.6 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.2+incompatible // indirect - github.com/docker/docker-credential-helpers v0.7.0 // indirect + github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/getsentry/sentry-go v0.18.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.1 // indirect - github.com/go-logr/logr v1.4.1 // indirect + github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.2.6 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/gofrs/flock v0.8.1 // indirect - github.com/gogo/googleapis v1.4.1 // indirect + github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/golang/protobuf v1.5.3 // indirect + github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.6.0 // indirect github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect - github.com/google/s2a-go v0.1.3 // indirect + github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.2.3 // indirect - github.com/googleapis/gax-go/v2 v2.8.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect + github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.0 // indirect github.com/greatroar/blobloom v0.7.2 // indirect - github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.4 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/in-toto/in-toto-golang v0.5.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.16.3 // indirect + github.com/klauspost/compress v1.17.11 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect github.com/kr/fs v0.1.0 // indirect @@ -137,10 +140,11 @@ require ( github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect - github.com/moby/patternmatcher v0.5.0 // indirect - github.com/moby/sys/mountinfo v0.6.2 // indirect - github.com/moby/sys/signal v0.7.0 // indirect + github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/mountinfo v0.7.2 // indirect + github.com/moby/sys/signal v0.7.1 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect @@ -150,19 +154,22 @@ require ( github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/opencontainers/runc v1.1.12 // indirect - github.com/opencontainers/runtime-spec v1.1.0-rc.1 // indirect + github.com/opencontainers/runtime-spec v1.2.0 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect + github.com/shibumi/go-pathspec v1.3.0 // indirect github.com/shirou/gopsutil/v3 v3.23.6 // indirect github.com/skeema/knownhosts v1.3.0 // indirect github.com/spf13/afero v1.9.5 // indirect @@ -174,32 +181,35 @@ require ( github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thejerf/suture/v4 v4.0.2 // indirect - github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa // indirect + github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184 // indirect + github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect github.com/ulikunitz/xz v0.5.11 // indirect - github.com/vbatts/tar-split v0.11.3 // indirect + github.com/vbatts/tar-split v0.11.5 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 // indirect - go.opentelemetry.io/otel v1.14.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 // indirect - go.opentelemetry.io/otel/metric v0.37.0 // indirect - go.opentelemetry.io/otel/sdk v1.14.0 // indirect - go.opentelemetry.io/otel/trace v1.14.0 // indirect - go.opentelemetry.io/proto/otlp v0.19.0 // indirect - golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect + go.opentelemetry.io/otel/metric v1.28.0 // indirect + go.opentelemetry.io/otel/sdk v1.28.0 // indirect + go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/proto/otlp v1.3.1 // indirect + golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect golang.org/x/net v0.34.0 // indirect - golang.org/x/oauth2 v0.7.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.29.0 // indirect - golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect - google.golang.org/api v0.122.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.56.3 // indirect - google.golang.org/protobuf v1.34.1 // indirect + google.golang.org/api v0.155.0 // indirect + google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect + google.golang.org/grpc v1.66.3 // indirect + google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 41454ac41..c2d0dd960 100644 --- a/go.sum +++ b/go.sum @@ -33,8 +33,8 @@ cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w9 cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= +cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= @@ -71,10 +71,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.19.1 h1:am86mquDUgjGNWxiGn+5PGLbmgiWXlE/yNWpIpNvuXY= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= +cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -112,14 +110,12 @@ cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y97 cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.13.0 h1:+CmB+K0J/33d0zSQ9SlFWUeCCEn5XJA0ZMZ3pHE9u8k= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= @@ -177,8 +173,8 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1 h1:F5QDG5ChchaAVQhINh24U99OWHURqrW8OmQcGKXcbgI= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= +cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= @@ -193,15 +189,14 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1 h1:EKPd1INOIyr5hWOWhvpmQpY6tKjeG0hT1s3AMC/9fic= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652 h1:+vTEFqeoeur6XSq06bs+roX3YiT49gUniJK7Zky7Xjg= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -211,13 +206,15 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.10.0-rc.8 h1:YSZVvlIIDD1UxQpJp0h+dnpLUw+TrY0cx8obKsp3bek= -github.com/Microsoft/hcsshim v0.10.0-rc.8/go.mod h1:OEthFdQv/AD2RAdzR6Mm1N1KPCztGKDurW1Z8b8VGMM= +github.com/Microsoft/hcsshim v0.12.8 h1:BtDWYlFMcWhorrvSSo2M7z0csPdw6t7no/C3FsSvqiI= +github.com/Microsoft/hcsshim v0.12.8/go.mod h1:cibQ4BqhJ32FXDwPdQhKhwrwophnh3FuT4nwQZF907w= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= +github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -235,6 +232,8 @@ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edY github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -261,60 +260,69 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= +github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= +github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= -github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= +github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= +github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.7.3 h1:cKwYKkP1eTj54bP3wCdXXBymmKRQMrWjkLSWZZJDa8o= -github.com/containerd/containerd v1.7.3/go.mod h1:32FOM4/O0RkNg7AjQj3hDzN9cUGtu+HMvaKUNiqCZB8= +github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= +github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= +github.com/containerd/containerd/api v1.7.19 h1:VWbJL+8Ap4Ju2mx9c9qS1uFSB1OVYr5JJrW2yT5vFoA= +github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= -github.com/containerd/continuity v0.4.1 h1:wQnVrjIyQ8vhU2sgOiL5T07jo+ouqc2bnKsv5/EqGhU= -github.com/containerd/continuity v0.4.1/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= +github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= +github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= +github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/nydus-snapshotter v0.3.1 h1:b8WahTrPkt3XsabjG2o/leN4fw3HWZYr+qxo/Z8Mfzk= -github.com/containerd/nydus-snapshotter v0.3.1/go.mod h1:+8R7NX7vrjlxAgtidnsstwIhpzyTlriYPssTxH++uiM= -github.com/containerd/stargz-snapshotter v0.13.0 h1:3zr1/IkW1aEo6cMYTQeZ4L2jSuCN+F4kgGfjnuowe4U= -github.com/containerd/stargz-snapshotter/estargz v0.14.3 h1:OqlDCK3ZVUO6C3B/5FSkDwbkEETK84kQgEeFwDC+62k= -github.com/containerd/stargz-snapshotter/estargz v0.14.3/go.mod h1:KY//uOCIkSuNAHhJogcZtrNHdKrA99/FCCRjE3HD36o= +github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= +github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= +github.com/containerd/nydus-snapshotter v0.14.0 h1:6/eAi6d7MjaeLLuMO8Udfe5GVsDudmrDNO4SGETMBco= +github.com/containerd/nydus-snapshotter v0.14.0/go.mod h1:TT4jv2SnIDxEBu4H2YOvWQHPOap031ydTaHTuvc5VQk= +github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= +github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/containerd/stargz-snapshotter v0.15.1 h1:fpsP4kf/Z4n2EYnU0WT8ZCE3eiKDwikDhL6VwxIlgeA= +github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= +github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v1.2.2 h1:9vqZr0pxwOF5koz6N0N3kJ0zDHokrcPxIR/ZR2YFtOs= -github.com/containerd/ttrpc v1.2.2/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= +github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU= +github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= -github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= +github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= +github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= -github.com/containers/ocicrypt v1.1.7 h1:thhNr4fu2ltyGz8aMx8u48Ae0Pnbip3ePP9/mzkZ/3U= -github.com/containers/ocicrypt v1.1.7/go.mod h1:7CAhjcj2H8AYp5YvEie7oVSK2AhBY8NscCYRawuDNtw= +github.com/containers/ocicrypt v1.1.10 h1:r7UR6o8+lyhkEywetubUUgcKFjOWOaWz8cEBrCPX0ic= +github.com/containers/ocicrypt v1.1.10/go.mod h1:YfzSSr06PTHQwSTUKqDSjish9BeW1E4HUmreluQcMd8= github.com/containers/storage v1.46.0 h1:K3Tw/U+ZwmMT/tzX04mh5wnK2PuIdEGS2BGMP7ZYAqw= github.com/containers/storage v1.46.0/go.mod h1:AVNewDV1jODy8b4Ia4AgsJ6UFKQSIaOQvQ8S6N4VuH0= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= -github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= +github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= @@ -327,17 +335,20 @@ github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkE github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/docker/cli v24.0.7+incompatible h1:wa/nIwYFW7BVTGa7SWPVyyXU9lgORqUb1xfI36MSkFg= -github.com/docker/cli v24.0.7+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= +github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/cli v27.4.0-rc.2+incompatible h1:A0GZwegDlt2wdt3tpmrUzkVOZmbhvd7i05wPSf7Oo74= +github.com/docker/cli v27.4.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v24.0.7+incompatible h1:Wo6l37AuwP3JaMnZa226lzVXGA3F9Ig1seQen0cKYlM= -github.com/docker/docker v24.0.7+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= -github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= -github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/docker v27.4.0-rc.2+incompatible h1:9OJjVGtelk/zGC3TyKweJ29b9Axzh0s/0vtU4mneumE= +github.com/docker/docker v27.4.0-rc.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= +github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= +github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -358,9 +369,11 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.10.1 h1:c0g45+xCJhdgFGw7a5QAfdS4byAbud7miNWJ1WwEVf8= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= +github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= @@ -391,32 +404,24 @@ github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0q github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= -github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= -github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= -github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= +github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0 h1:/d3pCKDPWNnvIWe0vVUpNP32qc8U3PDVxySP/y360qE= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -449,8 +454,8 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -500,19 +505,19 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.3 h1:FAgZmpLl/SXurPEZyCMPBIiiYeTbqfjlbdnCNTAkbGE= -github.com/google/s2a-go v0.1.3/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= +github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= +github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= -github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -522,19 +527,17 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= -github.com/googleapis/gax-go/v2 v2.8.0/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= +github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/greatroar/blobloom v0.7.2 h1:F30MGLHOcb4zr0pwCPTcKdlTM70rEgkf+LzdUPc5ss8= github.com/greatroar/blobloom v0.7.2/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0 h1:BZHcxBETFHIdVyhyEfOvn/RdU/QGdLI4y34qQGjGWO0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -550,8 +553,8 @@ github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mO github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru/v2 v2.0.4 h1:7GHuZcgid37q8o5i3QI9KMT4nCWQQ3Kx3Ov6bb9MfK0= -github.com/hashicorp/golang-lru/v2 v2.0.4/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -578,8 +581,8 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.16.3 h1:XuJt9zzcnaz6a16/OU53ZjWp/v7/42WcR5t2a0PcNQY= -github.com/klauspost/compress v1.16.3/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= +github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 h1:BcxbplxjtczA1a6d3wYoa7a0WL3rq9DKBMGHeKyjEF0= @@ -589,7 +592,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxv github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -617,7 +619,6 @@ github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= @@ -632,21 +633,27 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzC github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs= -github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4= +github.com/moby/buildkit v0.18.2 h1:l86uBvxh4ntNoUUg3Y0eGTbKg1PbUh6tawJ4Xt75SpQ= +github.com/moby/buildkit v0.18.2/go.mod h1:vCR5CX8NGsPTthTg681+9kdmfvkvqJBXEv71GZe5msU= +github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= +github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/patternmatcher v0.5.0 h1:YCZgJOeULcxLw1Q+sVR636pmS7sPEn1Qo2iAN6M7DBo= -github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= +github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= -github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= -github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5lXtc= -github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= -github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= -github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/mountinfo v0.7.2 h1:1shs6aH5s4o5H2zQLn796ADW1wMrIwHsyJ2v9KouLrg= +github.com/moby/sys/mountinfo v0.7.2/go.mod h1:1YOa8w8Ih7uW0wALDUgT1dTTSBrZ+HiBLGws92L2RU4= +github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= +github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/sys/signal v0.7.1 h1:PrQxdvxcGijdo6UXXo/lU/TvHUWyPhj7UOpSo8tuvk0= +github.com/moby/sys/signal v0.7.1/go.mod h1:Se1VGehYokAkrSQwL4tDzHvETwUZlnY7S5XtQ50mQp8= +github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= +github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= +github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= @@ -695,9 +702,8 @@ github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1 github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b h1:YWuSjZCQAPM8UUBLkYUk1e+rZcvWHJmFb6i6rM44Xs8= -github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= +github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= @@ -705,14 +711,11 @@ github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.1.0-rc.1 h1:wHa9jroFfKGQqFHj0I1fMRKLl0pfj+ynAqBxo3v6u9w= -github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= +github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= -github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= -github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= -github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= @@ -734,6 +737,8 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= @@ -741,9 +746,8 @@ github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3g github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.11.0 h1:5EAgkfkMl659uZPbe9AS2N68a7Cc1TJbPEuGzFuRbyk= -github.com/prometheus/procfs v0.11.0/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= @@ -781,14 +785,13 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= -github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f h1:9B623Cfs+mclYK6dsae7gLSwuIBHvlgmEup87qpqsAQ= -github.com/spdx/tools-golang v0.3.1-0.20230104082527-d6f58551be3f/go.mod h1:VHzvNsKAfAGqs4ZvwRL+7a0dNsL20s7lGui4K9C0xQM= +github.com/spdx/tools-golang v0.5.3 h1:ialnHeEYUC4+hkm5vJm4qz2x+oEJbS0mAMFrNXdQraY= +github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= @@ -802,7 +805,6 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -837,22 +839,23 @@ github.com/thejerf/suture/v4 v4.0.2 h1:VxIH/J8uYvqJY1+9fxi5GBfGRkRZ/jlSOP6x9HijF github.com/thejerf/suture/v4 v4.0.2/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= -github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa h1:XOFp/3aBXlqmOFAg3r6e0qQjPnK5I970LilqX+Is1W8= -github.com/tonistiigi/fsutil v0.0.0-20230105215944-fb433841cbfa/go.mod h1:AvLEd1LEIl64G2Jpgwo7aVV5lGH0ePcKl0ygGIHNYl8= +github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184 h1:RgyoSI38Y36zjQaszel/0RAcIehAnjA1B0RiUV9SDO4= +github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184/go.mod h1:Dl/9oEjK7IqnjAm21Okx/XIxUCFJzvh+XdVHUlBwXTw= +github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 h1:7I5c2Ig/5FgqkYOh/N87NzoyI9U15qUPXhDD8uCupv8= +github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= -github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f h1:DLpt6B5oaaS8jyXHa9VA4rrZloBVPVXeCtrOsrFauxc= -github.com/tonistiigi/vt100 v0.0.0-20210615222946-8066bb97264f/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= +github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab h1:H6aJ0yKQ0gF49Qb2z5hI1UHxSQt4JMyxebFR15KnApw= +github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/vbatts/tar-split v0.11.3 h1:hLFqsOLQ1SsppQNTMpkpPXClLDfC2A3Zgy9OUU+RVck= -github.com/vbatts/tar-split v0.11.3/go.mod h1:9QlHN18E+fEH7RdG+QAJJcuya3rqT7eXSTY7wGrAokY= +github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= +github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -867,7 +870,6 @@ github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -877,35 +879,36 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0 h1:5jD3teb4Qh7mx/nfzq4jO2WFFpvXD0vYWFDrdvNWmXk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= -go.opentelemetry.io/otel v1.14.0 h1:/79Huy8wbf5DnIPhemGB+zEPVwnN6fuQybr/SRXa6hM= -go.opentelemetry.io/otel v1.14.0/go.mod h1:o4buv+dJzx8rohcUeRmWUZhqupFvzWis188WlggnNeU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0 h1:TKf2uAs2ueguzLaxOCBXNpHxfO/aC7PAdDsSH0IbeRQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= -go.opentelemetry.io/otel/metric v0.37.0 h1:pHDQuLQOZwYD+Km0eb657A25NaRzy0a+eLyKfDXedEs= -go.opentelemetry.io/otel/metric v0.37.0/go.mod h1:DmdaHfGt54iV6UKxsV9slj2bBRJcKC1B1uvDLIioc1s= -go.opentelemetry.io/otel/sdk v1.14.0 h1:PDCppFRDq8A1jL9v6KMI6dYesaq+DFcDZvjsoGvxGzY= -go.opentelemetry.io/otel/sdk v1.14.0/go.mod h1:bwIC5TjrNG6QDCHNWvW4HLHtUQ4I+VQDsnjhvyZCALM= -go.opentelemetry.io/otel/trace v1.14.0 h1:wp2Mmvj41tDsyAJXiWDWpfNsOiIyd38fy85pyKcFq/M= -go.opentelemetry.io/otel/trace v1.14.0/go.mod h1:8avnQLK+CG77yNLUae4ea2JDQ6iT+gozhnZjy/rw9G8= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 h1:gbhw/u49SS3gkPWiYweQNJGm/uJN5GkI/FrosxSHT7A= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1/go.mod h1:GnOaBaFQ2we3b9AGWJpsBa7v1S5RlQzlC3O7dRMxZhM= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= +go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= +go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= +go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= +go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= +go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= +go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= +go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= +go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.19.0 h1:IVN6GR+mhC4s5yfcTbmzHYODqvWAp3ZedA2SJPI1Nnw= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= +go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd h1:Uo/x0Ir5vQJ+683GXB9Ug+4fcjsbp7z7Ul8UaZbhsRM= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= @@ -921,8 +924,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8= -golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= +golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -949,6 +952,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1029,8 +1034,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.7.0 h1:qe6s0zUXlPX80/dITx3440hWZ7GwMwgDDyrSGTPJG/g= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1115,7 +1120,6 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1134,7 +1138,6 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220906165534-d0df966e6959/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1159,15 +1162,14 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= +golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1285,15 +1287,14 @@ google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.122.0 h1:zDobeejm3E7pEG1mNHvdxvjs5XJoCMzyNH+CmwL94Es= -google.golang.org/api v0.122.0/go.mod h1:gcitW0lvnyWjSp9nKxAbdHKIZ6vF4aajGueeslZOyms= +google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= +google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1316,7 +1317,6 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -1399,8 +1399,12 @@ google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqw google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= +google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= +google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1428,7 +1432,6 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= @@ -1438,8 +1441,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= -google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.66.3 h1:TWlsh8Mv0QI/1sIbs1W36lqRclxrmF+eFJ4DbI0fuhA= +google.golang.org/grpc v1.66.3/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1456,8 +1459,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= +google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1468,7 +1471,6 @@ gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -1481,7 +1483,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= diff --git a/pkg/app/debug_llb.go b/pkg/app/debug_llb.go index 42fb25142..1e699d775 100644 --- a/pkg/app/debug_llb.go +++ b/pkg/app/debug_llb.go @@ -119,9 +119,9 @@ func debugLLB(clicontext *cli.Context) error { } type llbOp struct { - Op pb.Op + Op *pb.Op Digest digest.Digest - OpMetadata pb.OpMetadata + OpMetadata *pb.OpMetadata } // Refer to https://github.com/moby/buildkit/blob/master/cmd/buildctl/debug/dumpllb.go#L17:5 @@ -129,11 +129,11 @@ func loadLLB(def *llb.Definition) ([]llbOp, error) { var ops []llbOp for _, dt := range def.Def { var op pb.Op - if err := (&op).Unmarshal(dt); err != nil { + if err := (&op).UnmarshalVT(dt); err != nil { return nil, errors.Wrap(err, "failed to parse op") } dgst := digest.FromBytes(dt) - ent := llbOp{Op: op, Digest: dgst, OpMetadata: def.Metadata[dgst]} + ent := llbOp{Op: &op, Digest: dgst, OpMetadata: def.Metadata[dgst].ToPB()} ops = append(ops, ent) } return ops, nil @@ -162,12 +162,12 @@ func writeDot(ops []llbOp, w io.Writer) { } } -func attr(dgst digest.Digest, op pb.Op) (string, string) { +func attr(dgst digest.Digest, op *pb.Op) (string, string) { switch op := op.Op.(type) { case *pb.Op_Source: return op.Source.Identifier, "ellipse" case *pb.Op_Exec: - return generateExecNode(op.Exec) + return strings.Join(op.Exec.Meta.Args, " "), "box" case *pb.Op_Build: return "build", "box3d" case *pb.Op_Merge: @@ -198,26 +198,3 @@ func attr(dgst digest.Digest, op pb.Op) (string, string) { return dgst.String(), "plaintext" } } - -func generateExecNode(op *pb.ExecOp) (string, string) { - mounts := []string{} - for _, m := range op.Mounts { - mstr := fmt.Sprintf("selector=%s, target=%s, mount-type=%s", m.Selector, - m.Dest, m.MountType) - if m.CacheOpt != nil { - mstr = mstr + fmt.Sprintf(" cache-id=%s, cache-share-mode = %s", - m.CacheOpt.ID, m.CacheOpt.Sharing) - } - mounts = append(mounts, mstr) - } - - name := fmt.Sprintf("user=%s, cwd=%s, args={%s}, mounts={%s}, env={%s}", - op.Meta.User, - op.Meta.Cwd, - strings.Join(op.Meta.Args, " "), - strings.Join(mounts, " "), - strings.Join(op.Meta.Env, " "), - ) - - return name, "box" -} diff --git a/pkg/app/image_prune.go b/pkg/app/image_prune.go index 7f03ce161..4a00499ee 100644 --- a/pkg/app/image_prune.go +++ b/pkg/app/image_prune.go @@ -19,7 +19,7 @@ import ( "io" "os" - dockertypes "github.com/docker/docker/api/types" + dockerimage "github.com/docker/docker/api/types/image" "github.com/docker/go-units" "github.com/olekukonko/tablewriter" "github.com/urfave/cli/v2" @@ -52,7 +52,7 @@ func pruneImages(clicontext *cli.Context) error { return nil } -func renderPruneReport(w io.Writer, report dockertypes.ImagesPruneReport) { +func renderPruneReport(w io.Writer, report dockerimage.PruneReport) { table := tablewriter.NewWriter(w) table.SetHeader([]string{"Type", "Image"}) diff --git a/pkg/app/image_prune_test.go b/pkg/app/image_prune_test.go index 23873a2dd..cef277cb2 100644 --- a/pkg/app/image_prune_test.go +++ b/pkg/app/image_prune_test.go @@ -18,13 +18,13 @@ import ( "os" "testing" - "github.com/docker/docker/api/types" + dockerimage "github.com/docker/docker/api/types/image" ) func Test_renderPruneReport(t *testing.T) { - report := types.ImagesPruneReport{ - ImagesDeleted: []types.ImageDeleteResponseItem{ + report := dockerimage.PruneReport{ + ImagesDeleted: []dockerimage.DeleteResponse{ { Deleted: "sha256:123", }, diff --git a/pkg/app/prune.go b/pkg/app/prune.go index 6f212be0a..ef820165e 100644 --- a/pkg/app/prune.go +++ b/pkg/app/prune.go @@ -70,7 +70,9 @@ func prune(clicontext *cli.Context) error { }(time.Now()) keepDuration := clicontext.Duration("keep-duration") - keepStorage := clicontext.Float64("keep-storage") + maxUsed := clicontext.Float64("max-used-mb") + minFree := clicontext.Float64("min-free-mb") + reserved := clicontext.Float64("reserved-mb") filter := clicontext.StringSlice("filter") verbose := clicontext.Bool("verbose") @@ -93,7 +95,7 @@ func prune(clicontext *cli.Context) error { } } if err := bkClient.Prune(clicontext.Context, - keepDuration, keepStorage, filter, verbose, cleanAll); err != nil { + keepDuration, maxUsed, minFree, reserved, filter, verbose, cleanAll); err != nil { return errors.Wrap(err, "failed to prune buildkit cache") } return nil diff --git a/pkg/autocomplete/zsh.go b/pkg/autocomplete/zsh.go index 757cb7d7d..fde52ab50 100644 --- a/pkg/autocomplete/zsh.go +++ b/pkg/autocomplete/zsh.go @@ -23,7 +23,7 @@ import ( "strings" "github.com/cockroachdb/errors" - "github.com/containerd/containerd/log" + "github.com/containerd/log" "github.com/urfave/cli/v2" "github.com/tensorchord/envd/pkg/util/fileutil" diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 54ec1ab31..49faaf44c 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -239,7 +239,7 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err for _, entry := range b.entries { // Set up docker config auth. dockerConfig := config.LoadDefaultConfigFile(os.Stderr) - attachable := []session.Attachable{authprovider.NewDockerAuthProvider(dockerConfig)} + attachable := []session.Attachable{authprovider.NewDockerAuthProvider(dockerConfig, map[string]*authprovider.AuthTLSConfig{})} b.logger.WithFields(logrus.Fields{ "type": entry.Type, }).Debug("build image with buildkit") diff --git a/pkg/builder/util.go b/pkg/builder/util.go index 7ac3e70b2..d0d0b7929 100644 --- a/pkg/builder/util.go +++ b/pkg/builder/util.go @@ -45,9 +45,11 @@ func ImageConfigStr(labels map[string]string, ports map[string]struct{}, ExposedPorts: ports, Entrypoint: entrypoint, }, - Architecture: platform.Architecture, // Refer to https://github.com/tensorchord/envd/issues/269#issuecomment-1152944914 - OS: platform.OS, + Platform: ocispecs.Platform{ + Architecture: platform.Architecture, + OS: platform.OS, + }, RootFS: ocispecs.RootFS{ Type: "layers", }, diff --git a/pkg/buildkitd/buildkitd.go b/pkg/buildkitd/buildkitd.go index ec1d65537..ac5a9f7bf 100644 --- a/pkg/buildkitd/buildkitd.go +++ b/pkg/buildkitd/buildkitd.go @@ -58,7 +58,7 @@ type Client interface { buildFunc gateway.BuildFunc, statusChan chan *client.SolveStatus, ) (*client.SolveResponse, error) Prune(ctx context.Context, keepDuration time.Duration, - keepStorage float64, filter []string, verbose, all bool) error + maxUsed float64, minFree float64, reserved float64, filter []string, verbose, all bool) error Close() error } @@ -95,7 +95,6 @@ func NewMobyClient(ctx context.Context, driver types.BuilderType, return nil, errors.Wrap(err, "failed to create the client") } bkcli, err := client.New(ctx, c.BuildkitdAddr(), - client.WithFailFast(), client.WithContextDialer(func(context.Context, string) (net.Conn, error) { return dockerCli.DialHijack(ctx, "/grpc", "h2c", nil) }), client.WithSessionDialer(func(ctx context.Context, proto string, meta map[string][]string) (net.Conn, error) { @@ -125,7 +124,7 @@ func NewClient(ctx context.Context, driver types.BuilderType, "driver": c.driver, }) - cli, err := client.New(ctx, c.BuildkitdAddr(), client.WithFailFast()) + cli, err := client.New(ctx, c.BuildkitdAddr()) if err != nil { return nil, errors.Wrap(err, "failed to create the client") } @@ -223,10 +222,15 @@ func (c generalClient) connected(ctx context.Context) (bool, error) { } func (c generalClient) Prune(ctx context.Context, keepDuration time.Duration, - keepStorage float64, filter []string, verbose, all bool) error { + maxUsed float64, minFree float64, reserved float64, filter []string, verbose, all bool) error { opts := []client.PruneOption{ client.WithFilter(filter), - client.WithKeepOpt(keepDuration, int64(keepStorage*1e6)), + client.WithKeepOpt( + keepDuration, + int64(reserved*1e6), + int64(maxUsed*1e6), + int64(minFree*1e6), + ), } if all { opts = append(opts, client.PruneAll) diff --git a/pkg/buildkitd/mock/mock.go b/pkg/buildkitd/mock/mock.go index 5a34c7b95..a2612c350 100644 --- a/pkg/buildkitd/mock/mock.go +++ b/pkg/buildkitd/mock/mock.go @@ -82,17 +82,17 @@ func (mr *MockClientMockRecorder) Close() *gomock.Call { } // Prune mocks base method. -func (m *MockClient) Prune(ctx context.Context, keepDuration time.Duration, keepStorage float64, filter []string, verbose, all bool) error { +func (m *MockClient) Prune(ctx context.Context, keepDuration time.Duration, maxUsed, minFree, reserved float64, filter []string, verbose, all bool) error { m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "Prune", ctx, keepDuration, keepStorage, filter, verbose, all) + ret := m.ctrl.Call(m, "Prune", ctx, keepDuration, maxUsed, minFree, reserved, filter, verbose, all) ret0, _ := ret[0].(error) return ret0 } // Prune indicates an expected call of Prune. -func (mr *MockClientMockRecorder) Prune(ctx, keepDuration, keepStorage, filter, verbose, all interface{}) *gomock.Call { +func (mr *MockClientMockRecorder) Prune(ctx, keepDuration, maxUsed, minFree, reserved, filter, verbose, all interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Prune", reflect.TypeOf((*MockClient)(nil).Prune), ctx, keepDuration, keepStorage, filter, verbose, all) + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Prune", reflect.TypeOf((*MockClient)(nil).Prune), ctx, keepDuration, maxUsed, minFree, reserved, filter, verbose, all) } // Solve mocks base method. diff --git a/pkg/driver/client.go b/pkg/driver/client.go index 1876fb9d3..f8c794d65 100644 --- a/pkg/driver/client.go +++ b/pkg/driver/client.go @@ -19,7 +19,7 @@ import ( "io" "time" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/image" "github.com/tensorchord/envd/pkg/util/buildkitutil" ) @@ -31,10 +31,10 @@ type Client interface { Exec(ctx context.Context, cname string, cmd []string) error - GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (types.ImageSummary, error) + GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (image.Summary, error) RemoveImage(ctx context.Context, image string) error PushImage(ctx context.Context, image, platform string) error - PruneImage(ctx context.Context) (types.ImagesPruneReport, error) + PruneImage(ctx context.Context) (image.PruneReport, error) Stats(ctx context.Context, cname string, statChan chan<- *Stats, done <-chan bool) error } diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 0051bc9ea..0ece2bb26 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -30,13 +30,14 @@ import ( "github.com/cockroachdb/errors" "github.com/containers/image/v5/docker/reference" "github.com/containers/image/v5/pkg/docker/config" - "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" + dockerimage "github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/mount" "github.com/docker/docker/client" "github.com/docker/docker/pkg/jsonmessage" "github.com/moby/term" + imagespec "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" @@ -104,15 +105,15 @@ func NormalizeName(s string) (string, error) { return name.String(), nil } -func (c dockerClient) ListImage(ctx context.Context) ([]types.ImageSummary, error) { - images, err := c.ImageList(ctx, types.ImageListOptions{ +func (c dockerClient) ListImage(ctx context.Context) ([]dockerimage.Summary, error) { + images, err := c.ImageList(ctx, dockerimage.ListOptions{ Filters: dockerFilters(false), }) return images, err } func (c dockerClient) RemoveImage(ctx context.Context, image string) error { - _, err := c.ImageRemove(ctx, image, types.ImageRemoveOptions{}) + _, err := c.ImageRemove(ctx, image, dockerimage.RemoveOptions{}) if err != nil { logrus.WithError(err).Errorf("failed to remove image %s", image) return err @@ -133,9 +134,16 @@ func (c dockerClient) PushImage(ctx context.Context, image string, platform stri if err != nil { return errors.Wrap(err, "failed to marshal auth struct") } - reader, err := c.ImagePush(ctx, image, types.ImagePushOptions{ + platformInfo := strings.Split(platform, "/") + if len(platformInfo) != 2 { + return errors.New("invalid platform format, should be <architecture>/<os>") + } + reader, err := c.ImagePush(ctx, image, dockerimage.PushOptions{ RegistryAuth: base64.URLEncoding.EncodeToString(buf), - Platform: platform, + Platform: &imagespec.Platform{ + Architecture: platformInfo[0], + OS: platformInfo[1], + }, }) if err != nil { logrus.WithError(err).Errorf("failed to push image %s", image) @@ -172,28 +180,28 @@ func (c dockerClient) PushImage(ctx context.Context, image string, platform stri return nil } -func (c dockerClient) GetImage(ctx context.Context, image string) (types.ImageSummary, error) { - images, err := c.ImageList(ctx, types.ImageListOptions{ +func (c dockerClient) GetImage(ctx context.Context, image string) (dockerimage.Summary, error) { + images, err := c.ImageList(ctx, dockerimage.ListOptions{ Filters: dockerFiltersWithName(image), }) if err != nil { - return types.ImageSummary{}, err + return dockerimage.Summary{}, err } if len(images) == 0 { - return types.ImageSummary{}, errors.Errorf("image %s not found", image) + return dockerimage.Summary{}, errors.Errorf("image %s not found", image) } return images[0], nil } -func (c dockerClient) GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (types.ImageSummary, error) { - images, err := c.ImageList(ctx, types.ImageListOptions{ +func (c dockerClient) GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (dockerimage.Summary, error) { + images, err := c.ImageList(ctx, dockerimage.ListOptions{ Filters: dockerFiltersWithCacheLabel(image, hash), }) if err != nil { - return types.ImageSummary{}, err + return dockerimage.Summary{}, err } if len(images) == 0 { - return types.ImageSummary{}, errors.Errorf("image with hash %s not found", hash) + return dockerimage.Summary{}, errors.Errorf("image with hash %s not found", hash) } return images[0], nil } @@ -238,7 +246,7 @@ func (c dockerClient) ResumeContainer(ctx context.Context, name string) (string, func (c dockerClient) RemoveContainer(ctx context.Context, name string) (string, error) { logger := logrus.WithField("container", name) - err := c.ContainerRemove(ctx, name, types.ContainerRemoveOptions{}) + err := c.ContainerRemove(ctx, name, container.RemoveOptions{}) if err != nil { errCause := errors.UnwrapAll(err).Error() switch { @@ -266,7 +274,7 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * // Pull the image. logger.Debug("pulling image") - body, err := c.ImagePull(ctx, tag, types.ImagePullOptions{}) + body, err := c.ImagePull(ctx, tag, dockerimage.PullOptions{}) if err != nil { return "", errors.Wrap(err, "failed to pull image") } @@ -325,7 +333,7 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * logger.Warnf("run with warnings: %s", w) } - if err := c.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil { + if err := c.ContainerStart(ctx, resp.ID, container.StartOptions{}); err != nil { return "", errors.Wrap(err, "failed to start container") } @@ -388,7 +396,7 @@ func (c dockerClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) err } func (c dockerClient) Exec(ctx context.Context, cname string, cmd []string) error { - execConfig := types.ExecConfig{ + execConfig := container.ExecOptions{ Cmd: cmd, Detach: true, } @@ -397,15 +405,15 @@ func (c dockerClient) Exec(ctx context.Context, cname string, cmd []string) erro return err } execID := resp.ID - return c.ContainerExecStart(ctx, execID, types.ExecStartCheck{ + return c.ContainerExecStart(ctx, execID, container.ExecStartOptions{ Detach: true, }) } -func (c dockerClient) PruneImage(ctx context.Context) (types.ImagesPruneReport, error) { +func (c dockerClient) PruneImage(ctx context.Context) (dockerimage.PruneReport, error) { pruneReport, err := c.ImagesPrune(ctx, filters.Args{}) if err != nil { - return types.ImagesPruneReport{}, errors.Wrap(err, "failed to prune images") + return dockerimage.PruneReport{}, errors.Wrap(err, "failed to prune images") } return pruneReport, nil } @@ -539,14 +547,14 @@ func (c dockerClient) handleContainerCreated(ctx context.Context, } } else if status == containerType.StatusExited { logger.Info("container exited, try to start it...") - err := c.ContainerStart(ctx, cname, types.ContainerStartOptions{}) + err := c.ContainerStart(ctx, cname, container.StartOptions{}) if err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to start exited cotaniner") } } else if status == containerType.StatusDead { logger.Info("container is dead, try to remove it...") - err := c.ContainerRemove(ctx, cname, types.ContainerRemoveOptions{}) + err := c.ContainerRemove(ctx, cname, container.RemoveOptions{}) if err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to remove container") diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 92ab708b2..9d005a08d 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -25,6 +25,7 @@ import ( "github.com/cockroachdb/errors" "github.com/docker/docker/api/types" + dockerimage "github.com/docker/docker/api/types/image" "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/driver" @@ -132,8 +133,8 @@ func (nc *nerdctlClient) Exec(ctx context.Context, cname string, cmd []string) e return nil } -func (nc *nerdctlClient) GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (types.ImageSummary, error) { - return types.ImageSummary{}, nil +func (nc *nerdctlClient) GetImageWithCacheHashLabel(ctx context.Context, image string, hash string) (dockerimage.Summary, error) { + return dockerimage.Summary{}, nil } func (nc *nerdctlClient) RemoveImage(ctx context.Context, image string) error { return nil @@ -141,8 +142,8 @@ func (nc *nerdctlClient) RemoveImage(ctx context.Context, image string) error { func (nc *nerdctlClient) PushImage(ctx context.Context, image, platform string) error { return nil } -func (nc *nerdctlClient) PruneImage(ctx context.Context) (types.ImagesPruneReport, error) { - return types.ImagesPruneReport{}, nil +func (nc *nerdctlClient) PruneImage(ctx context.Context) (dockerimage.PruneReport, error) { + return dockerimage.PruneReport{}, nil } func (nc *nerdctlClient) Stats(ctx context.Context, cname string, statChan chan<- *driver.Stats, done <-chan bool) error { return nil diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 50931c541..9b2a7fa81 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -26,9 +26,9 @@ import ( "github.com/cockroachdb/errors" "github.com/docker/cli/opts" - dockertypes "github.com/docker/docker/api/types" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" + dockerimage "github.com/docker/docker/api/types/image" "github.com/docker/docker/api/types/mount" "github.com/docker/docker/client" "github.com/docker/go-connections/nat" @@ -65,7 +65,7 @@ func dockerFiltersWithName(name string) filters.Args { } func (e dockerEngine) ListImage(ctx context.Context) ([]types.EnvdImage, error) { - images, err := e.ImageList(ctx, dockertypes.ImageListOptions{ + images, err := e.ImageList(ctx, dockerimage.ListOptions{ Filters: dockerFilters(false), }) if err != nil { @@ -84,7 +84,7 @@ func (e dockerEngine) ListImage(ctx context.Context) ([]types.EnvdImage, error) } func (e dockerEngine) GetEnvironment(ctx context.Context, env string) (*types.EnvdEnvironment, error) { - ctrs, err := e.ContainerList(ctx, dockertypes.ContainerListOptions{ + ctrs, err := e.ContainerList(ctx, container.ListOptions{ Filters: dockerFiltersWithName(env), }) if err != nil { @@ -104,7 +104,7 @@ func (e dockerEngine) GetEnvironment(ctx context.Context, env string) (*types.En func (e dockerEngine) ListEnvironment( ctx context.Context) ([]types.EnvdEnvironment, error) { - ctrs, err := e.ContainerList(ctx, dockertypes.ContainerListOptions{ + ctrs, err := e.ContainerList(ctx, container.ListOptions{ Filters: dockerFilters(false), }) if err != nil { @@ -173,7 +173,7 @@ func (e dockerEngine) ListImageDependency(ctx context.Context, image string) (*t "image": image, }) logger.Debug("getting dependencies") - images, err := e.ImageList(ctx, dockertypes.ImageListOptions{ + images, err := e.ImageList(ctx, dockerimage.ListOptions{ Filters: dockerFiltersWithName(image), }) if err != nil { @@ -289,7 +289,7 @@ func (e dockerEngine) CleanEnvdIfExists(ctx context.Context, name string, force if !created { return nil } - return e.ContainerRemove(ctx, name, dockertypes.ContainerRemoveOptions{Force: force}) + return e.ContainerRemove(ctx, name, container.RemoveOptions{Force: force}) } func (e dockerEngine) Exists(ctx context.Context, cname string) (bool, error) { @@ -591,7 +591,7 @@ func (e dockerEngine) StartEnvd(ctx context.Context, so StartOptions) (*StartRes bar.UpdateTitle("start the environment") if err := e.ContainerStart( - ctx, resp.ID, dockertypes.ContainerStartOptions{}); err != nil { + ctx, resp.ID, container.StartOptions{}); err != nil { errCause := errors.UnwrapAll(err) // Hack to check if the port is already allocated. if strings.Contains(errCause.Error(), "port is already allocated") { @@ -651,11 +651,11 @@ func (e dockerEngine) Destroy(ctx context.Context, name string) (string, error) } } - if err := e.ContainerRemove(ctx, name, dockertypes.ContainerRemoveOptions{}); err != nil { + if err := e.ContainerRemove(ctx, name, container.RemoveOptions{}); err != nil { return "", errors.Wrap(err, "failed to remove the container") } - if _, err := e.ImageRemove(ctx, ctr.Image, dockertypes.ImageRemoveOptions{}); err != nil { + if _, err := e.ImageRemove(ctx, ctr.Image, dockerimage.RemoveOptions{}); err != nil { return "", errors.Errorf("remove image %s failed: %w", ctr.Image, err) } logger.Infof("image(%s) is destroyed", ctr.Image) @@ -715,16 +715,16 @@ func (e dockerEngine) GPUEnabled(ctx context.Context) (bool, error) { return false, nil } -func (e dockerEngine) GetImage(ctx context.Context, image string) (types.EnvdImage, error) { - images, err := e.ImageList(ctx, dockertypes.ImageListOptions{ - Filters: dockerFiltersWithName(image), +func (e dockerEngine) GetImage(ctx context.Context, imageName string) (types.EnvdImage, error) { + images, err := e.ImageList(ctx, dockerimage.ListOptions{ + Filters: dockerFiltersWithName(imageName), }) if err != nil { return types.EnvdImage{}, err } if len(images) == 0 { return types.EnvdImage{}, - errors.Errorf("image %s not found", image) + errors.Errorf("image %s not found", imageName) } img, err := types.NewImageFromSummary(images[0]) if err != nil { @@ -733,10 +733,10 @@ func (e dockerEngine) GetImage(ctx context.Context, image string) (types.EnvdIma return *img, nil } -func (e dockerEngine) PruneImage(ctx context.Context) (dockertypes.ImagesPruneReport, error) { +func (e dockerEngine) PruneImage(ctx context.Context) (dockerimage.PruneReport, error) { pruneReport, err := e.ImagesPrune(ctx, filters.Args{}) if err != nil { - return dockertypes.ImagesPruneReport{}, errors.Wrap(err, "failed to prune images") + return dockerimage.PruneReport{}, errors.Wrap(err, "failed to prune images") } return pruneReport, nil } diff --git a/pkg/envd/engine.go b/pkg/envd/engine.go index d7aee0dd4..ceaf4573b 100644 --- a/pkg/envd/engine.go +++ b/pkg/envd/engine.go @@ -18,7 +18,7 @@ import ( "context" "time" - dockertypes "github.com/docker/docker/api/types" + dockerimage "github.com/docker/docker/api/types/image" "github.com/tensorchord/envd/pkg/lang/ir" sshconfig "github.com/tensorchord/envd/pkg/ssh/config" @@ -63,7 +63,7 @@ type ImageClient interface { ListImage(ctx context.Context) ([]types.EnvdImage, error) ListImageDependency(ctx context.Context, image string) (*types.Dependency, error) GetImage(ctx context.Context, image string) (types.EnvdImage, error) - PruneImage(ctx context.Context) (dockertypes.ImagesPruneReport, error) + PruneImage(ctx context.Context) (dockerimage.PruneReport, error) } type VersionClient interface { diff --git a/pkg/envd/envdserver.go b/pkg/envd/envdserver.go index 794ed40b2..0e3d5b79c 100644 --- a/pkg/envd/envdserver.go +++ b/pkg/envd/envdserver.go @@ -21,7 +21,7 @@ import ( "time" "github.com/cockroachdb/errors" - dockertypes "github.com/docker/docker/api/types" + dockerimage "github.com/docker/docker/api/types/image" "github.com/sirupsen/logrus" servertypes "github.com/tensorchord/envd-server/api/types" "github.com/tensorchord/envd-server/client" @@ -85,8 +85,8 @@ func (e *envdServerEngine) GetImage(ctx context.Context, image string) (types.En return *img, nil } -func (e envdServerEngine) PruneImage(ctx context.Context) (dockertypes.ImagesPruneReport, error) { - return dockertypes.ImagesPruneReport{}, errors.New("not implemented for envd-server") +func (e envdServerEngine) PruneImage(ctx context.Context) (dockerimage.PruneReport, error) { + return dockerimage.PruneReport{}, errors.New("not implemented for envd-server") } func (e *envdServerEngine) GetInfo(ctx context.Context) (*types.EnvdInfo, error) { diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 7727f09ab..5d29fbf4d 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -256,10 +256,12 @@ func (g *generalGraph) customBase() (llb.State, error) { } // Set the environment variables to RuntimeEnviron to keep it in the resulting image. - for _, e := range envs { + for _, key := range envs.Keys() { // in case the env value also contains `=` - kv := strings.SplitN(e, "=", 2) - g.RuntimeEnviron[kv[0]] = kv[1] + value, ok := envs.Get(key) + if ok { + g.RuntimeEnviron[key] = value + } } return base, nil } diff --git a/pkg/types/envd.go b/pkg/types/envd.go index 567c8aa79..cf019cdab 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -20,6 +20,8 @@ import ( "github.com/cockroachdb/errors" "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/image" + dockersystem "github.com/docker/docker/api/types/system" "github.com/moby/buildkit/util/system" servertypes "github.com/tensorchord/envd-server/api/types" @@ -103,7 +105,7 @@ type EnvdManifest struct { } type EnvdInfo struct { - types.Info + dockersystem.Info } type EnvdContext struct { @@ -170,7 +172,7 @@ type AuthConfig struct { JWTToken string `json:"jwt_token,omitempty"` } -func NewImageFromSummary(image types.ImageSummary) (*EnvdImage, error) { +func NewImageFromSummary(image image.Summary) (*EnvdImage, error) { img := EnvdImage{ ImageMeta: servertypes.ImageMeta{ Digest: image.ID, @@ -266,7 +268,7 @@ func NewDependencyFromContainerJSON(ctr types.ContainerJSON) (*Dependency, error return NewDependencyFromLabels(ctr.Config.Labels) } -func NewDependencyFromImageSummary(img types.ImageSummary) (*Dependency, error) { +func NewDependencyFromImageSummary(img image.Summary) (*Dependency, error) { return NewDependencyFromLabels(img.Labels) } From da83a6268ddc154090d08ef0606f418461823e97 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 8 Jan 2025 23:25:55 +0800 Subject: [PATCH 306/355] fix(cve): containers/image, fix toto conflicts (#1938) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 55 +++++++++++-------------- go.sum | 128 ++++++++++++++++++++++++++++++++------------------------- 2 files changed, 98 insertions(+), 85 deletions(-) diff --git a/go.mod b/go.mod index f2d239ec7..5db876400 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/tensorchord/envd -go 1.22.0 +go 1.22.6 toolchain go1.23.4 @@ -11,8 +11,8 @@ require ( github.com/charmbracelet/lipgloss v0.8.0 github.com/cockroachdb/errors v1.11.1 github.com/containerd/console v1.0.4 - github.com/containerd/containerd v1.7.24 - github.com/containers/image/v5 v5.25.0 + github.com/containerd/log v0.1.0 + github.com/containers/image/v5 v5.33.0 github.com/creack/pty v1.1.18 github.com/docker/cli v27.4.0-rc.2+incompatible github.com/docker/docker v27.4.0-rc.2+incompatible @@ -54,13 +54,13 @@ require ( require ( cloud.google.com/go v0.112.0 // indirect - cloud.google.com/go/compute/metadata v0.3.0 // indirect + cloud.google.com/go/compute/metadata v0.5.0 // indirect cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/storage v1.36.0 // indirect - dario.cat/mergo v1.0.0 // indirect + dario.cat/mergo v1.0.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect - github.com/BurntSushi/toml v1.3.2 // indirect + github.com/BurntSushi/toml v1.4.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect @@ -71,21 +71,21 @@ require ( github.com/cloudflare/circl v1.3.7 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect + github.com/containerd/containerd v1.7.24 // indirect github.com/containerd/containerd/api v1.7.19 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs v0.3.0 // indirect - github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/containerd/ttrpc v1.2.5 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect - github.com/containers/ocicrypt v1.1.10 // indirect - github.com/containers/storage v1.46.0 // indirect + github.com/containers/ocicrypt v1.2.0 // indirect + github.com/containers/storage v1.56.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect github.com/cyphar/filepath-securejoin v0.3.6 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/distribution v2.8.2+incompatible // indirect + github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -108,7 +108,7 @@ require ( github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect - github.com/gorilla/mux v1.8.0 // indirect + github.com/gorilla/mux v1.8.1 // indirect github.com/greatroar/blobloom v0.7.2 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect @@ -118,21 +118,19 @@ require ( github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/in-toto/in-toto-golang v0.5.0 // indirect + github.com/in-toto/in-toto-golang v0.9.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.17.11 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect - github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/mattn/go-runewidth v0.0.16 // indirect github.com/minio/sha256-simd v1.0.1 // indirect github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect @@ -143,30 +141,29 @@ require ( github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/capability v0.3.0 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/sys/signal v0.7.1 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/moby/sys/user v0.3.0 // indirect github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect - github.com/opencontainers/runc v1.1.12 // indirect github.com/opencontainers/runtime-spec v1.2.0 // indirect github.com/pelletier/go-toml/v2 v2.0.8 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect - github.com/rivo/uniseg v0.4.4 // indirect + github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.12.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.4.0 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect github.com/segmentio/backo-go v1.0.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect @@ -178,13 +175,11 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.4.2 // indirect github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 // indirect - github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thejerf/suture/v4 v4.0.2 // indirect github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184 // indirect github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect - github.com/ulikunitz/xz v0.5.11 // indirect - github.com/vbatts/tar-split v0.11.5 // indirect + github.com/ulikunitz/xz v0.5.12 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect @@ -198,17 +193,17 @@ require ( go.opentelemetry.io/otel/sdk v1.28.0 // indirect go.opentelemetry.io/otel/trace v1.28.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect - golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect + golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/net v0.34.0 // indirect - golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/oauth2 v0.23.0 // indirect golang.org/x/sys v0.29.0 // indirect golang.org/x/text v0.21.0 // indirect golang.org/x/tools v0.29.0 // indirect google.golang.org/api v0.155.0 // indirect google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect - google.golang.org/grpc v1.66.3 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.67.0 // indirect google.golang.org/protobuf v1.35.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index c2d0dd960..9f2ff2887 100644 --- a/go.sum +++ b/go.sum @@ -71,8 +71,8 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute/metadata v0.3.0 h1:Tz+eQXMEqDIKRsmY3cHTL6FVaynIjX2QxYC4trgAKZc= -cloud.google.com/go/compute/metadata v0.3.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= +cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= @@ -186,8 +186,8 @@ cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xX cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -dario.cat/mergo v1.0.0 h1:AGCNq9Evsj31mOgNPcLyXc+4PNABt905YmuqPYYpBWk= -dario.cat/mergo v1.0.0/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= +dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= @@ -197,8 +197,8 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8= -github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= +github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= +github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= @@ -206,8 +206,8 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.12.8 h1:BtDWYlFMcWhorrvSSo2M7z0csPdw6t7no/C3FsSvqiI= -github.com/Microsoft/hcsshim v0.12.8/go.mod h1:cibQ4BqhJ32FXDwPdQhKhwrwophnh3FuT4nwQZF907w= +github.com/Microsoft/hcsshim v0.12.9 h1:2zJy5KA+l0loz1HzEGqyNnjd3fyZA31ZBCGKacp6lLg= +github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEPuoIWYVvZ8Y= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= @@ -226,6 +226,8 @@ github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiE github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= github.com/bcicen/ctop v0.7.7/go.mod h1:jO0mmP/wGx4ZEGCWAoMx8DYFNTYNs6YG8wzCGj+DX+Q= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= @@ -235,8 +237,11 @@ github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= github.com/charmbracelet/lipgloss v0.8.0 h1:IS00fk4XAHcf8uZKc3eHeMUTCxUH6NkaTrdyCQk84RU= @@ -260,8 +265,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b h1:ga8SEFjZ60pxLcmhnThWgvH2wg8376yUJmPhEH4H3kw= -github.com/cncf/xds/go v0.0.0-20240423153145-555b57ec207b/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0TxYVST9h4Ie192jJWpHvthBBgg= +github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= @@ -290,6 +295,8 @@ github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= +github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v1.1.0 h1:4I2mbh5stb1u6ycIABlBw9zgtlK8viPI9QkQNRQEEmY= github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= @@ -309,14 +316,14 @@ github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQ github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= -github.com/containers/image/v5 v5.25.0 h1:TJ0unmalbU+scd0i3Txap2wjGsAnv06MSCwgn6bsizk= -github.com/containers/image/v5 v5.25.0/go.mod h1:EKvys0WVlRFkDw26R8y52TuhV9Tfn0yq2luLX6W52Ls= +github.com/containers/image/v5 v5.33.0 h1:6oPEFwTurf7pDTGw7TghqGs8K0+OvPtY/UyzU0B2DfE= +github.com/containers/image/v5 v5.33.0/go.mod h1:T7HpASmvnp2H1u4cyckMvCzLuYgpD18dSmabSw0AcHk= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= -github.com/containers/ocicrypt v1.1.10 h1:r7UR6o8+lyhkEywetubUUgcKFjOWOaWz8cEBrCPX0ic= -github.com/containers/ocicrypt v1.1.10/go.mod h1:YfzSSr06PTHQwSTUKqDSjish9BeW1E4HUmreluQcMd8= -github.com/containers/storage v1.46.0 h1:K3Tw/U+ZwmMT/tzX04mh5wnK2PuIdEGS2BGMP7ZYAqw= -github.com/containers/storage v1.46.0/go.mod h1:AVNewDV1jODy8b4Ia4AgsJ6UFKQSIaOQvQ8S6N4VuH0= +github.com/containers/ocicrypt v1.2.0 h1:X14EgRK3xNFvJEfI5O4Qn4T3E25ANudSOZz/sirVuPM= +github.com/containers/ocicrypt v1.2.0/go.mod h1:ZNviigQajtdlxIZGibvblVuIFBKIuUI2M0QM12SD31U= +github.com/containers/storage v1.56.0 h1:DZ9KSkj6M2tvj/4bBoaJu3QDHRl35BwsZ4kmLJS97ZI= +github.com/containers/storage v1.56.0/go.mod h1:c6WKowcAlED/DkWGNuL9bvGYqIWCVy7isRMdCSKWNjk= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= @@ -333,14 +340,15 @@ github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGL github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/cli v27.4.0-rc.2+incompatible h1:A0GZwegDlt2wdt3tpmrUzkVOZmbhvd7i05wPSf7Oo74= github.com/docker/cli v27.4.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= +github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v27.4.0-rc.2+incompatible h1:9OJjVGtelk/zGC3TyKweJ29b9Axzh0s/0vtU4mneumE= github.com/docker/docker v27.4.0-rc.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= @@ -351,6 +359,8 @@ github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -369,8 +379,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.m github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.0.4 h1:gVPz/FMfvh57HdSJQyvBtF00j8JU4zdyUgIUNhlgg0A= -github.com/envoyproxy/protoc-gen-validate v1.0.4/go.mod h1:qys6tmnRsYrQqIhm2bvKZH4Blx/1gTIZ2UKVY1M+Yew= +github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= +github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= @@ -478,7 +488,6 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= @@ -531,8 +540,9 @@ github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56 github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/greatroar/blobloom v0.7.2 h1:F30MGLHOcb4zr0pwCPTcKdlTM70rEgkf+LzdUPc5ss8= github.com/greatroar/blobloom v0.7.2/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -560,8 +570,8 @@ github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= -github.com/in-toto/in-toto-golang v0.5.0/go.mod h1:/Rq0IZHLV7Ku5gielPT4wPHJfH1GdHMCq8+WPxw8/BE= +github.com/in-toto/in-toto-golang v0.9.0 h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU= +github.com/in-toto/in-toto-golang v0.9.0/go.mod h1:xsBVrVsHNsB61++S6Dy2vWosKhuA3lUTQd+eF9HdeMo= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= @@ -585,8 +595,8 @@ github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IX github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8 h1:BcxbplxjtczA1a6d3wYoa7a0WL3rq9DKBMGHeKyjEF0= -github.com/klauspost/pgzip v1.2.6-0.20220930104621-17e8dac29df8/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= +github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -617,8 +627,9 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= +github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= @@ -641,6 +652,8 @@ github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/capability v0.3.0 h1:kEP+y6te0gEXIaeQhIi0s7vKs/w0RPoH1qPa6jROcVg= +github.com/moby/sys/capability v0.3.0/go.mod h1:4g9IK291rVkms3LKCDOoYlnV8xKwoDTpIrNEE35Wq0I= github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= @@ -657,7 +670,6 @@ github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcY github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= @@ -673,6 +685,8 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= @@ -707,15 +721,13 @@ github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2sz github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= -github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.11.0 h1:+5Zbo97w3Lbmb3PeqQtpmTkMwsW5nRI3YaLpt7tQ7oU= -github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= +github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= @@ -739,19 +751,26 @@ github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig= github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= +github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= +github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= +github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= @@ -765,8 +784,8 @@ github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZj github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/secure-systems-lab/go-securesystemslib v0.4.0 h1:b23VGrQhTA8cN2CbBw7/FulN9fTtqYUdS5+Oxzt+DUE= -github.com/secure-systems-lab/go-securesystemslib v0.4.0/go.mod h1:FGBZgq2tXWICsxWQW1msNf49F0Pf2Op5Htayx335Qbs= +github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= +github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= github.com/segmentio/backo-go v1.0.0 h1:kbOAtGJY2DqOR0jfRkYEorx/b18RgtepGtY3+Cpe6qA= @@ -829,7 +848,6 @@ github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= github.com/syncthing/syncthing v1.23.7 h1:PaHKBN4C+qaam9vtMV0qjwMBywAuyVtxmQ7vbBrV0Rw= github.com/syncthing/syncthing v1.23.7/go.mod h1:9f9139UzZ/llx16dP3x1XtID87IhOorEbHHrTDjNhQs= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -848,14 +866,14 @@ github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6 github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab h1:H6aJ0yKQ0gF49Qb2z5hI1UHxSQt4JMyxebFR15KnApw= github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= -github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= -github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= +github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= -github.com/vbatts/tar-split v0.11.5 h1:3bHCTIheBm1qFTcgh9oPu+nNBtX+XJIupG/vacinCts= -github.com/vbatts/tar-split v0.11.5/go.mod h1:yZbwRsSeGjusneWgA781EKej9HF8vme8okylkAeNKLk= +github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= +github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -924,8 +942,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk= -golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= +golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -1034,8 +1052,8 @@ golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= -golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= -golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= +golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1401,10 +1419,10 @@ google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094 h1:0+ozOGcrp+Y8Aq8TLNN2Aliibms5LEzsq99ZZmAGYm0= -google.golang.org/genproto/googleapis/api v0.0.0-20240701130421-f6361c86f094/go.mod h1:fJ/e3If/Q67Mj99hin0hMhiNyCRmt6BQ2aWIJshUSJw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 h1:BwIjyKYGsK9dMCBOorzRri8MQwmi7mT9rGHsCEinZkA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= +google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1441,8 +1459,8 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.66.3 h1:TWlsh8Mv0QI/1sIbs1W36lqRclxrmF+eFJ4DbI0fuhA= -google.golang.org/grpc v1.66.3/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw= +google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1489,8 +1507,8 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o= -gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= +gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From 6d654a22285262fc5030c6af418f5ca89b3a9a9b Mon Sep 17 00:00:00 2001 From: Ce Gao <cegao@tensorchord.ai> Date: Thu, 9 Jan 2025 12:39:57 +0800 Subject: [PATCH 307/355] chore: Update macos runner version (#1942) Signed-off-by: Ce Gao <cegao@tensorchord.ai> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0a4982bfa..2a122b276 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,7 +47,7 @@ jobs: timeout-minutes: 20 strategy: matrix: - os: [macos-11, ubuntu-20.04] + os: [macos-13, ubuntu-20.04] steps: - uses: actions/checkout@v4 - name: Get gobin From 95bb1c37f177c6e6e4ba49d4429e6e8a1ebc6ea5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 9 Jan 2025 16:31:45 +0800 Subject: [PATCH 308/355] feat(cache): update cuda & cudnn version (#1943) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 11 +++++------ base-images/remote-cache/build.envd | 12 ++++++++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a122b276..88c03b25d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -174,16 +174,15 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - build_func: ["build", "build_gpu_11_2", "build_gpu_11_3", "build_gpu_11_6"] include: - build_func: build tag_suffix: "" - - build_func: build_gpu_11_2 - tag_suffix: "-cuda-11.2.2-cudnn-8" - - build_func: build_gpu_11_3 - tag_suffix: "-cuda-11.3.1-cudnn-8" - build_func: build_gpu_11_6 tag_suffix: "-cuda-11.6.2-cudnn-8" + - build_func: build_gpu_11_8 + tag_suffix: "-cuda-11.8.0-cudnn-8" + - build_func: build_gpu_12_3 + tag_suffix: "-cuda-12.3.2-cudnn-9" needs: image_publish steps: - uses: actions/checkout@v4 @@ -216,5 +215,5 @@ jobs: run: ./base-images/remote-cache/build-and-push-remote-cache.sh env: BUILD_FUNC: ${{ matrix.build_func }} - TAG_SUFFIX: ${{ matrix.TAG_SUFFIX }} + TAG_SUFFIX: ${{ matrix.tag_suffix }} ENVD_BUILD_OWNER: 1000 diff --git a/base-images/remote-cache/build.envd b/base-images/remote-cache/build.envd index 43591d86a..d6321f991 100644 --- a/base-images/remote-cache/build.envd +++ b/base-images/remote-cache/build.envd @@ -18,3 +18,15 @@ def build_gpu_11_6(): """pytorch""" base(os="ubuntu20.04", language="python3") install.cuda(version="11.6.2", cudnn="8") + + +def build_gpu_11_8(): + """pytorch""" + base(os="ubuntu20.04", language="python3") + install.cuda(version="11.8.0", cudnn="8") + + +def build_gpu_12_3(): + """pytorch""" + base(os="ubuntu20.04", language="python3") + install.cuda(version="12.3.2", cudnn="9") From 5219a41852ce7f73b510ecb1e29abb82bf94444b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 9 Jan 2025 16:53:12 +0800 Subject: [PATCH 309/355] docs: updated CHANGELOG.md (#1941) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: kemingy <12974685+kemingy@users.noreply.github.com> --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d5777d957..ac388685e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## v0.3.47 (2025-01-09) + + * [95bb1c3](https://github.com/tensorchord/envd/commit/95bb1c37f177c6e6e4ba49d4429e6e8a1ebc6ea5) feat(cache): update cuda & cudnn version (#1943) + +### Contributors + + * Keming + +## v0.3.46 (2025-01-08) + + * [da83a62](https://github.com/tensorchord/envd/commit/da83a6268ddc154090d08ef0606f418461823e97) fix(cve): containers/image, fix toto conflicts (#1938) + * [d7ef20d](https://github.com/tensorchord/envd/commit/d7ef20df3444915a2b2793a9d6137caf01f3d3a2) fix(cve): docker & buildkit (#1936) + * [c504c66](https://github.com/tensorchord/envd/commit/c504c66e389c6a3bfc57686b5a47d550f3853125) feat(ci): adopt ruff & lychee (#1935) + * [812de36](https://github.com/tensorchord/envd/commit/812de3622975c7244d7b9b6d1e939b355f35009d) fix(cve): go-get & x/crypto (#1934) + * [d61ca2e](https://github.com/tensorchord/envd/commit/d61ca2e543fd5ec6d8ce238304fb329ee8ed3440) feat: envd up with --gpu-set (#1861) + +### Contributors + + * Keming + * zhang-wei + ## v0.3.45 (2024-01-24) * [639c188](https://github.com/tensorchord/envd/commit/639c188536181c1d621bd45d04b2243fef72c467) fix: go-git security issue GHSA-mw99-9chc-xw7r (#1844) From 1155c9ae53aca62e61584b49cef45b027b4b9557 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 9 Jan 2025 21:02:01 +0800 Subject: [PATCH 310/355] docs(readme): fix github markdown callout (#1945) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 4d6b0151c..40b34db22 100644 --- a/README.md +++ b/README.md @@ -248,7 +248,7 @@ envd-quick-start http://localhost:42779 envd-quick-start.envd /home/g ## Difference between v0 and v1 -> **Note** +> [!NOTE] > To use the `v1` config file, add `# syntax=v1` to the first line of your `build.envd` file. | Features | v0 | v1 | @@ -261,11 +261,11 @@ envd-quick-start http://localhost:42779 envd-quick-start.envd /home/g | support installing multiple languages | ⚠️ | ✅ | | support `moby` builder | ❌ | ✅ <sup>[(a)](#v1-moby)</sup> | -> **Note** +> [!NOTE] > <a name="v1-moby">(a)</a> To use the `moby` builder, you will need to create a new context with `envd context create --name moby-test --builder moby-worker --use`. > For more information about the `moby` builder, check the [issue-1693](https://github.com/tensorchord/envd/issues/1693). -> **Important** +> [!IMPORTANT] > For more details, check the [upgrade to v1](https://envd.tensorchord.ai/guide/v1.html) doc. ## More on documentation 📝 From 5ad61681f6d7e699de69020d498f01e6d818eabe Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sun, 12 Jan 2025 12:47:56 +0800 Subject: [PATCH 311/355] feat: upgrade to python 3.11 (#1940) --- e2e/v0/cli/testdata/custom-image-test/build.envd | 2 +- e2e/v1/cli/testdata/custom-image-test/build.envd | 2 +- envd/api/v0/__init__.py | 2 +- envd/api/v1/install.py | 2 +- examples/custom-image/build.envd | 2 +- examples/dpgen2/build.envd | 2 +- pkg/lang/ir/v0/conda.go | 2 +- pkg/lang/ir/v0/install-conda.sh | 9 +++------ pkg/lang/ir/v0/python.go | 2 +- pkg/lang/ir/v1/conda.go | 2 +- pkg/lang/ir/v1/get_conda.sh | 9 +++------ pkg/lang/ir/v1/python.go | 2 +- setup.py | 5 ++--- 13 files changed, 18 insertions(+), 25 deletions(-) diff --git a/e2e/v0/cli/testdata/custom-image-test/build.envd b/e2e/v0/cli/testdata/custom-image-test/build.envd index 6c295247e..100576bc6 100644 --- a/e2e/v0/cli/testdata/custom-image-test/build.envd +++ b/e2e/v0/cli/testdata/custom-image-test/build.envd @@ -1,5 +1,5 @@ def build(): - base(language="python", image="python:3.9-slim") + base(language="python", image="python:3.11-slim") install.python_packages( name=[ "via", diff --git a/e2e/v1/cli/testdata/custom-image-test/build.envd b/e2e/v1/cli/testdata/custom-image-test/build.envd index 7f09c9344..869a7265e 100644 --- a/e2e/v1/cli/testdata/custom-image-test/build.envd +++ b/e2e/v1/cli/testdata/custom-image-test/build.envd @@ -2,7 +2,7 @@ def build(): - base(image="python:3.9-slim", dev=False) + base(image="python:3.11-slim", dev=False) install.python_packages( name=[ "via", diff --git a/envd/api/v0/__init__.py b/envd/api/v0/__init__.py index 0f53c3408..ef082862a 100644 --- a/envd/api/v0/__init__.py +++ b/envd/api/v0/__init__.py @@ -30,7 +30,7 @@ def base(os: str, language: str, image: Optional[str]): Args: os (str): The operating system (i.e. `ubuntu20.04`) language (str): The programming language dependency (i.e. `python3.8`) - image (Optional[str]): Custom image (i.e. `python:3.9-slim`) + image (Optional[str]): Custom image (i.e. `python:3.11-slim`) """ diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index ba4eb19a8..de0a1a430 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -30,7 +30,7 @@ from typing import Optional, Sequence -def python(version: str = "3.9"): +def python(version: str = "3.11"): """Install python. If `install.conda` is not used, this will create a solo Python environment. Otherwise, it diff --git a/examples/custom-image/build.envd b/examples/custom-image/build.envd index 6c295247e..100576bc6 100644 --- a/examples/custom-image/build.envd +++ b/examples/custom-image/build.envd @@ -1,5 +1,5 @@ def build(): - base(language="python", image="python:3.9-slim") + base(language="python", image="python:3.11-slim") install.python_packages( name=[ "via", diff --git a/examples/dpgen2/build.envd b/examples/dpgen2/build.envd index 904cf80d9..afd479d86 100644 --- a/examples/dpgen2/build.envd +++ b/examples/dpgen2/build.envd @@ -23,7 +23,7 @@ def install_kubectl_kind(env_name): def build(): - base(os="ubuntu20.04", language="python3.9") + base(os="ubuntu20.04", language="python3.11") install.python_packages( name=[ "pydflow", diff --git a/pkg/lang/ir/v0/conda.go b/pkg/lang/ir/v0/conda.go index b4188f2ec..ba01d7a1d 100644 --- a/pkg/lang/ir/v0/conda.go +++ b/pkg/lang/ir/v0/conda.go @@ -29,7 +29,7 @@ import ( ) const ( - condaVersionDefault = "py39_4.11.0" + condaVersionDefault = "py311_24.11.1-0" // check the issue https://github.com/mamba-org/mamba/issues/1975 mambaVersionDefault = "0.25.1" condaRootPrefix = "/opt/conda" diff --git a/pkg/lang/ir/v0/install-conda.sh b/pkg/lang/ir/v0/install-conda.sh index 1ee87bb92..0f930c72e 100644 --- a/pkg/lang/ir/v0/install-conda.sh +++ b/pkg/lang/ir/v0/install-conda.sh @@ -2,16 +2,13 @@ set -euo pipefail && \ UNAME_M="$(uname -m)" && \ if [ "${UNAME_M}" = "x86_64" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-x86_64.sh"; \ - SHA256SUM="4ee9c3aa53329cd7a63b49877c0babb49b19b7e5af29807b793a76bdb1d362b4"; \ + SHA256SUM="807774bae6cd87132094458217ebf713df436f64779faf9bb4c3d4b6615c1e3a"; \ elif [ "${UNAME_M}" = "s390x" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-s390x.sh"; \ - SHA256SUM="e5e5e89cdcef9332fe632cd25d318cf71f681eef029a24495c713b18e66a8018"; \ + SHA256SUM="bb499b18dbcbb2d89b22f91fe26fe661f5ed1f1944fdc743560d69cd52a2468f"; \ elif [ "${UNAME_M}" = "aarch64" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-aarch64.sh"; \ - SHA256SUM="00c7127a8a8d3f4b9c2ab3391c661239d5b9a88eafe895fd0f3f2a8d9c0f4556"; \ -elif [ "${UNAME_M}" = "ppc64le" ]; then \ - MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-ppc64le.sh"; \ - SHA256SUM="8ee1f8d17ef7c8cb08a85f7d858b1cb55866c06fcf7545b98c3b82e4d0277e66"; \ + SHA256SUM="a8846ade7a5ddd9b6a6546590054d70d1c2cbe4fbe8c79fb70227e8fd93ef9f8"; \ fi && \ wget "${MINICONDA_URL}" -O /tmp/miniconda.sh && \ echo "${SHA256SUM} /tmp/miniconda.sh" > /tmp/shasum && \ diff --git a/pkg/lang/ir/v0/python.go b/pkg/lang/ir/v0/python.go index 2c6e0a075..36ce2dc04 100644 --- a/pkg/lang/ir/v0/python.go +++ b/pkg/lang/ir/v0/python.go @@ -28,7 +28,7 @@ import ( ) const ( - pythonVersionDefault = "3.9" + pythonVersionDefault = "3.11" ) func (g generalGraph) getAppropriatePythonVersion() (string, error) { diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index 1b6987529..cd8ea5a4b 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -29,7 +29,7 @@ import ( const ( builderImage = "curlimages/curl:7.86.0" - condaVersionDefault = "py39_4.11.0" + condaVersionDefault = "py311_24.11.1-0" microMambaImage = "mambaorg/micromamba:1.0.0" condaRootPrefix = "/opt/conda" condaBinDir = "/opt/conda/bin" diff --git a/pkg/lang/ir/v1/get_conda.sh b/pkg/lang/ir/v1/get_conda.sh index c3dbbcdd2..0175c0408 100644 --- a/pkg/lang/ir/v1/get_conda.sh +++ b/pkg/lang/ir/v1/get_conda.sh @@ -2,16 +2,13 @@ set -euo pipefail && \ UNAME_M="$(uname -m)" && \ if [ "${UNAME_M}" = "x86_64" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-x86_64.sh"; \ - SHA256SUM="4ee9c3aa53329cd7a63b49877c0babb49b19b7e5af29807b793a76bdb1d362b4"; \ + SHA256SUM="807774bae6cd87132094458217ebf713df436f64779faf9bb4c3d4b6615c1e3a"; \ elif [ "${UNAME_M}" = "s390x" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-s390x.sh"; \ - SHA256SUM="e5e5e89cdcef9332fe632cd25d318cf71f681eef029a24495c713b18e66a8018"; \ + SHA256SUM="bb499b18dbcbb2d89b22f91fe26fe661f5ed1f1944fdc743560d69cd52a2468f"; \ elif [ "${UNAME_M}" = "aarch64" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-aarch64.sh"; \ - SHA256SUM="00c7127a8a8d3f4b9c2ab3391c661239d5b9a88eafe895fd0f3f2a8d9c0f4556"; \ -elif [ "${UNAME_M}" = "ppc64le" ]; then \ - MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-ppc64le.sh"; \ - SHA256SUM="8ee1f8d17ef7c8cb08a85f7d858b1cb55866c06fcf7545b98c3b82e4d0277e66"; \ + SHA256SUM="a8846ade7a5ddd9b6a6546590054d70d1c2cbe4fbe8c79fb70227e8fd93ef9f8"; \ fi && \ wget "${MINICONDA_URL}" -O /tmp/miniconda.sh && \ echo "${SHA256SUM} /tmp/miniconda.sh" > /tmp/shasum && \ diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 8cf6bf4a6..10e402b55 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -29,7 +29,7 @@ import ( ) const ( - PythonVersionDefault = "3.9" + PythonVersionDefault = "3.11" microMambaPathPrefix = "/usr/local/bin" certPath = "/etc/ssl/certs" ) diff --git a/setup.py b/setup.py index 51ef746ac..fc2c63cca 100644 --- a/setup.py +++ b/setup.py @@ -88,12 +88,11 @@ def get_version(): "Intended Audience :: Science/Research", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python :: 3.6", - "Programming Language :: Python :: 3.7", - "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", ] From 6d0c0c8eb645df758b4104ffe37ec4cc2a09cea9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jan 2025 11:31:52 +0800 Subject: [PATCH 312/355] chore(deps): bump pypa/cibuildwheel from 2.19.2 to 2.22.0 (#1950) Bumps [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel) from 2.19.2 to 2.22.0. - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.19.2...v2.22.0) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 88c03b25d..97bbf139e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -72,7 +72,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.19.2 + uses: pypa/cibuildwheel@v2.22.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 1a54052e339cb60e2f4efe04ffddd0ffc798af0f Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 16 Jan 2025 11:44:44 +0800 Subject: [PATCH 313/355] feat: upgrade to ubuntu 22.04 (#1939) * feat: upgrade to ubuntu 22.04 Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix test hash Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix release macos version Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 4 ++-- .github/workflows/release.yml | 2 +- README.md | 6 +++--- base-images/build.sh | 2 +- base-images/julia1.8rc1-ubuntu20.04.Dockerfile | 2 +- base-images/remote-cache/build.envd | 8 ++++---- e2e/v0/cli/testdata/build-test/build.envd | 2 +- e2e/v0/cli/testdata/quick-start/build.envd | 2 +- e2e/v0/cli/testdata/up-test/build.envd | 2 +- e2e/v0/docs/testdata/complex/build.envd | 2 +- e2e/v0/docs/testdata/envdlib/build.envd | 2 +- e2e/v0/docs/testdata/getting_started/build.envd | 2 +- e2e/v0/docs/testdata/jupyter/build.envd | 2 +- e2e/v0/docs/testdata/minimal/build.envd | 2 +- e2e/v0/language/testdata/python/conda/build.envd | 2 +- e2e/v0/language/testdata/python/conda_channel/build.envd | 2 +- e2e/v0/language/testdata/run/build.envd | 2 +- e2e/v0/language/testdata/runtime/build.envd | 2 +- envd/api/v0/__init__.py | 4 ++-- envd/api/v0/config.py | 2 +- envd/api/v1/__init__.py | 4 ++-- envd/api/v1/config.py | 2 +- envd/api/v1/install.py | 2 +- examples/conda/build.envd | 2 +- examples/dgl/build.envd | 8 ++++---- examples/download_files/build.envd | 2 +- examples/dpgen2/build.envd | 2 +- examples/ianvs/build.envd | 2 +- examples/include_pkg/build.envd | 2 +- examples/julia-basic/build.envd | 2 +- examples/llm-inference/build.envd | 2 +- examples/mnist/build.envd | 2 +- examples/python-basic/build.envd | 2 +- examples/pytorch-profiler/build.envd | 2 +- examples/r-basic/build.envd | 2 +- examples/stable-diffusion/build.envd | 2 +- examples/streamlit-hello/build.envd | 2 +- examples/streamlit-mnist/build.envd | 4 ++-- pkg/app/interactive.go | 2 +- pkg/app/template/julia.envd | 4 ++-- pkg/app/template/r.envd | 4 ++-- pkg/lang/frontend/starlark/v0/interpreter_test.go | 2 +- pkg/lang/frontend/starlark/v0/testdata/test.envd | 2 +- pkg/lang/ir/v0/consts.go | 2 +- pkg/lang/ir/v0/system.go | 2 +- pkg/lang/ir/v1/consts.go | 2 +- pkg/types/envd.go | 2 +- 47 files changed, 61 insertions(+), 61 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index ee352cf91..73d06049c 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -5,13 +5,13 @@ on: branches: - main paths: - - '.github/workflows/**' + - '.github/workflows/CI.yml' - '**.go' - 'Makefile' - 'go.**' pull_request: paths: - - '.github/workflows/**' + - '.github/workflows/CI.yml' - '**.go' - 'Makefile' - 'go.**' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 97bbf139e..6115a099b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,7 +47,7 @@ jobs: timeout-minutes: 20 strategy: matrix: - os: [macos-13, ubuntu-20.04] + os: [macos-13, ubuntu-22.04] steps: - uses: actions/checkout@v4 - name: Get gobin diff --git a/README.md b/README.md index 40b34db22..1d9635d01 100644 --- a/README.md +++ b/README.md @@ -92,7 +92,7 @@ Forget copy-pasting Dockerfile instructions - use envd to easily build functions envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") envdlib.tensorboard(host_port=8888) ``` @@ -176,7 +176,7 @@ The build manifest `build.envd` looks like: ```python title=build.envd def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") # Configure the pip index if needed. # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages(name = [ @@ -227,7 +227,7 @@ Please edit the `build.envd` to enable jupyter notebook: ```python title=build.envd def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") # Configure the pip index if needed. # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages(name = [ diff --git a/base-images/build.sh b/base-images/build.sh index 8360039d2..95d562c5d 100755 --- a/base-images/build.sh +++ b/base-images/build.sh @@ -20,7 +20,7 @@ ROOT_DIR=`dirname $0` GIT_TAG_VERSION=$(git describe --tags --abbrev=0) DOCKER_HUB_ORG="${DOCKER_HUB_ORG:-tensorchord}" -ENVD_OS="${ENVD_OS:-ubuntu20.04}" +ENVD_OS="${ENVD_OS:-ubuntu22.04}" JULIA_VERSION="${JULIA_VERSION:-1.8rc1}" RLANG_VERSION="${RLANG_VERSION:-4.2}" diff --git a/base-images/julia1.8rc1-ubuntu20.04.Dockerfile b/base-images/julia1.8rc1-ubuntu20.04.Dockerfile index 0cdd309e5..64b49edc1 100644 --- a/base-images/julia1.8rc1-ubuntu20.04.Dockerfile +++ b/base-images/julia1.8rc1-ubuntu20.04.Dockerfile @@ -1,6 +1,6 @@ ARG ENVD_VERSION ARG ENVD_SSHD_IMAGE -FROM ubuntu:20.04 as base +FROM ubuntu:22.04 as base FROM base as base-amd64 diff --git a/base-images/remote-cache/build.envd b/base-images/remote-cache/build.envd index d6321f991..b774dc865 100644 --- a/base-images/remote-cache/build.envd +++ b/base-images/remote-cache/build.envd @@ -1,22 +1,22 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") def build_gpu_11_2(): """tensorflow""" - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.cuda(version="11.2.2", cudnn="8") def build_gpu_11_3(): """pytorch""" - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.cuda(version="11.3.1", cudnn="8") def build_gpu_11_6(): """pytorch""" - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.cuda(version="11.6.2", cudnn="8") diff --git a/e2e/v0/cli/testdata/build-test/build.envd b/e2e/v0/cli/testdata/build-test/build.envd index 3b22de80e..f7e0f9976 100644 --- a/e2e/v0/cli/testdata/build-test/build.envd +++ b/e2e/v0/cli/testdata/build-test/build.envd @@ -1,2 +1,2 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") diff --git a/e2e/v0/cli/testdata/quick-start/build.envd b/e2e/v0/cli/testdata/quick-start/build.envd index 9c0e3cb02..33bee60f7 100644 --- a/e2e/v0/cli/testdata/quick-start/build.envd +++ b/e2e/v0/cli/testdata/quick-start/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "numpy", diff --git a/e2e/v0/cli/testdata/up-test/build.envd b/e2e/v0/cli/testdata/up-test/build.envd index a71119306..9e49d82cc 100644 --- a/e2e/v0/cli/testdata/up-test/build.envd +++ b/e2e/v0/cli/testdata/up-test/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "via", diff --git a/e2e/v0/docs/testdata/complex/build.envd b/e2e/v0/docs/testdata/complex/build.envd index 99dbeb9ad..8276ff5d9 100644 --- a/e2e/v0/docs/testdata/complex/build.envd +++ b/e2e/v0/docs/testdata/complex/build.envd @@ -18,7 +18,7 @@ deb https://mirror.sjtu.edu.cn/ubuntu focal-security main restricted universe mu "ms-python.python", ] ) - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "numpy", diff --git a/e2e/v0/docs/testdata/envdlib/build.envd b/e2e/v0/docs/testdata/envdlib/build.envd index cd5b98c37..9fde95413 100644 --- a/e2e/v0/docs/testdata/envdlib/build.envd +++ b/e2e/v0/docs/testdata/envdlib/build.envd @@ -2,5 +2,5 @@ envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") envdlib.tensorboard(host_port=8888) diff --git a/e2e/v0/docs/testdata/getting_started/build.envd b/e2e/v0/docs/testdata/getting_started/build.envd index 4c7cbf7c3..aca0159b3 100644 --- a/e2e/v0/docs/testdata/getting_started/build.envd +++ b/e2e/v0/docs/testdata/getting_started/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") # Configure pip index if needed. # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages( diff --git a/e2e/v0/docs/testdata/jupyter/build.envd b/e2e/v0/docs/testdata/jupyter/build.envd index 3f3da5fa6..64173f743 100644 --- a/e2e/v0/docs/testdata/jupyter/build.envd +++ b/e2e/v0/docs/testdata/jupyter/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "numpy", diff --git a/e2e/v0/docs/testdata/minimal/build.envd b/e2e/v0/docs/testdata/minimal/build.envd index 26742cd5a..5b80aa65a 100644 --- a/e2e/v0/docs/testdata/minimal/build.envd +++ b/e2e/v0/docs/testdata/minimal/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "via", diff --git a/e2e/v0/language/testdata/python/conda/build.envd b/e2e/v0/language/testdata/python/conda/build.envd index acfeb96a0..fda006c00 100644 --- a/e2e/v0/language/testdata/python/conda/build.envd +++ b/e2e/v0/language/testdata/python/conda/build.envd @@ -1,3 +1,3 @@ def build(): install.conda_packages(env_file="env.yaml") - base(os="ubuntu20.04", language="python3.8") + base(os="ubuntu22.04", language="python3.8") diff --git a/e2e/v0/language/testdata/python/conda_channel/build.envd b/e2e/v0/language/testdata/python/conda_channel/build.envd index 46853559a..afb187906 100644 --- a/e2e/v0/language/testdata/python/conda_channel/build.envd +++ b/e2e/v0/language/testdata/python/conda_channel/build.envd @@ -7,4 +7,4 @@ channels: """ ) install.conda_packages(env_file="env.yaml") - base(os="ubuntu20.04", language="python3.8") + base(os="ubuntu22.04", language="python3.8") diff --git a/e2e/v0/language/testdata/run/build.envd b/e2e/v0/language/testdata/run/build.envd index 9ae7fa689..3c642f50c 100644 --- a/e2e/v0/language/testdata/run/build.envd +++ b/e2e/v0/language/testdata/run/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") shell("zsh") run( commands=[ diff --git a/e2e/v0/language/testdata/runtime/build.envd b/e2e/v0/language/testdata/runtime/build.envd index 1d2f67340..869559546 100644 --- a/e2e/v0/language/testdata/runtime/build.envd +++ b/e2e/v0/language/testdata/runtime/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "numpy", diff --git a/envd/api/v0/__init__.py b/envd/api/v0/__init__.py index ef082862a..6e4750fd1 100644 --- a/envd/api/v0/__init__.py +++ b/envd/api/v0/__init__.py @@ -28,7 +28,7 @@ def base(os: str, language: str, image: Optional[str]): """Set base image Args: - os (str): The operating system (i.e. `ubuntu20.04`) + os (str): The operating system (i.e. `ubuntu22.04`) language (str): The programming language dependency (i.e. `python3.8`) image (Optional[str]): Custom image (i.e. `python:3.11-slim`) """ @@ -90,7 +90,7 @@ def include(git: str): envd = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") envd.tensorboard(8000) ``` """ diff --git a/envd/api/v0/config.py b/envd/api/v0/config.py index bc13b382c..de9180a96 100644 --- a/envd/api/v0/config.py +++ b/envd/api/v0/config.py @@ -148,7 +148,7 @@ def julia_pkg_server(url: str): def rstudio_server(): """ - Enable the RStudio Server (only work for `base(os="ubuntu20.04", language="r")`) + Enable the RStudio Server (only work for `base(os="ubuntu22.04", language="r")`) """ diff --git a/envd/api/v1/__init__.py b/envd/api/v1/__init__.py index 949e1319e..1124ff4ab 100644 --- a/envd/api/v1/__init__.py +++ b/envd/api/v1/__init__.py @@ -33,7 +33,7 @@ """ -def base(image: str = "ubuntu:20.04", dev: bool = False): +def base(image: str = "ubuntu:22.04", dev: bool = False): """Set up the base env. Args: @@ -99,7 +99,7 @@ def include(git: str): envd = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") envd.tensorboard(host_port=8000) ``` """ diff --git a/envd/api/v1/config.py b/envd/api/v1/config.py index 2ab27b330..55de8dd58 100644 --- a/envd/api/v1/config.py +++ b/envd/api/v1/config.py @@ -154,7 +154,7 @@ def julia_pkg_server(url: str): def rstudio_server(): """ - Enable the RStudio Server (only work for `base(os="ubuntu20.04", language="r")`) + Enable the RStudio Server (only work for `base(os="ubuntu22.04", language="r")`) """ diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index de0a1a430..8ffebfb86 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -120,7 +120,7 @@ def cuda(version: str, cudnn: Optional[str] = "8"): This will replace the default base image to an `nvidia/cuda` image. You can also use a CUDA base image directly like - `base(image="nvidia/cuda:12.2.0-devel-ubuntu20.04", dev=True)`. + `base(image="nvidia/cuda:12.2.0-devel-ubuntu22.04", dev=True)`. Args: version (str): CUDA version, such as '11.6.2' diff --git a/examples/conda/build.envd b/examples/conda/build.envd index 41c73fe27..7d04d49b2 100644 --- a/examples/conda/build.envd +++ b/examples/conda/build.envd @@ -27,6 +27,6 @@ custom_channels: ], channel=["pytorch"], ) - base(os="ubuntu20.04", language="python3.8") + base(os="ubuntu22.04", language="python3.8") install.python_packages(name=["flask"]) install.cuda(version="11.2.2", cudnn="8") diff --git a/examples/dgl/build.envd b/examples/dgl/build.envd index b1fb43487..7fb078195 100644 --- a/examples/dgl/build.envd +++ b/examples/dgl/build.envd @@ -1,6 +1,6 @@ def build(): - # Use ubuntu20.04 as base image and install python - base(os="ubuntu20.04", language="python3") + # Use ubuntu22.04 as base image and install python + base(os="ubuntu22.04", language="python3") # Add the packages you are using here install.python_packages(["numpy", "dgl", "torch"]) @@ -13,8 +13,8 @@ def build(): def build_gpu(): - # Use ubuntu20.04 as base image and install python - base(os="ubuntu20.04", language="python3") + # Use ubuntu22.04 as base image and install python + base(os="ubuntu22.04", language="python3") # install cuda install.cuda(version="11.2.2", cudnn="8") diff --git a/examples/download_files/build.envd b/examples/download_files/build.envd index 1a59cf8c2..8152e9f7f 100644 --- a/examples/download_files/build.envd +++ b/examples/download_files/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") io.http( url="https://github.com/tensorchord/envd/releases/download/v0.2.0-alpha.18/envd-ssh_0.2.0-alpha.18_Linux_x86_64", checksum="sha256:163fa5d9775a3666ec91e2422a794277cc8575147f15767d364cc40157888cfb", diff --git a/examples/dpgen2/build.envd b/examples/dpgen2/build.envd index afd479d86..89229c777 100644 --- a/examples/dpgen2/build.envd +++ b/examples/dpgen2/build.envd @@ -23,7 +23,7 @@ def install_kubectl_kind(env_name): def build(): - base(os="ubuntu20.04", language="python3.11") + base(os="ubuntu22.04", language="python3.11") install.python_packages( name=[ "pydflow", diff --git a/examples/ianvs/build.envd b/examples/ianvs/build.envd index efd9206f4..4da057f5b 100644 --- a/examples/ianvs/build.envd +++ b/examples/ianvs/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3.6") + base(os="ubuntu22.04", language="python3.6") shell("zsh") install.apt_packages(name=["git", "libgl1-mesa-glx", "zip"]) run( diff --git a/examples/include_pkg/build.envd b/examples/include_pkg/build.envd index dd5a357ba..9ffbf34bb 100644 --- a/examples/include_pkg/build.envd +++ b/examples/include_pkg/build.envd @@ -2,5 +2,5 @@ envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") envdlib.tensorboard(8888) diff --git a/examples/julia-basic/build.envd b/examples/julia-basic/build.envd index 712dbd641..a6cefa217 100644 --- a/examples/julia-basic/build.envd +++ b/examples/julia-basic/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="julia") + base(os="ubuntu22.04", language="julia") # config.julia_pkg_server(url="https://mirrors.tuna.tsinghua.edu.cn/julia") install.julia_packages(["Example"]) shell("zsh") diff --git a/examples/llm-inference/build.envd b/examples/llm-inference/build.envd index 66c62568b..3a2c061b1 100644 --- a/examples/llm-inference/build.envd +++ b/examples/llm-inference/build.envd @@ -1,6 +1,6 @@ # syntax=v1 def build(): - # base(os="ubuntu20.04", language="python3") + # base(os="ubuntu22.04", language="python3") base(dev=True) install.conda() install.python() diff --git a/examples/mnist/build.envd b/examples/mnist/build.envd index 5bdaf6d2a..2f1d57c7d 100644 --- a/examples/mnist/build.envd +++ b/examples/mnist/build.envd @@ -1,5 +1,5 @@ def base_env(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.vscode_extensions( [ "ms-python.python", diff --git a/examples/python-basic/build.envd b/examples/python-basic/build.envd index 5b008a357..0ae4b8423 100644 --- a/examples/python-basic/build.envd +++ b/examples/python-basic/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages( [ diff --git a/examples/pytorch-profiler/build.envd b/examples/pytorch-profiler/build.envd index d7d36570b..88ecca157 100644 --- a/examples/pytorch-profiler/build.envd +++ b/examples/pytorch-profiler/build.envd @@ -2,7 +2,7 @@ envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") shell("zsh") install.cuda(version="11.2.2", cudnn="8") install.python_packages( diff --git a/examples/r-basic/build.envd b/examples/r-basic/build.envd index b30cce31f..522036819 100644 --- a/examples/r-basic/build.envd +++ b/examples/r-basic/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="r") + base(os="ubuntu22.04", language="r") install.r_packages( [ "remotes", diff --git a/examples/stable-diffusion/build.envd b/examples/stable-diffusion/build.envd index 68d116870..a5313431b 100644 --- a/examples/stable-diffusion/build.envd +++ b/examples/stable-diffusion/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages( [ diff --git a/examples/streamlit-hello/build.envd b/examples/streamlit-hello/build.envd index a840563d5..b473aecd9 100644 --- a/examples/streamlit-hello/build.envd +++ b/examples/streamlit-hello/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python") + base(os="ubuntu22.04", language="python") configure_streamlit(8501) diff --git a/examples/streamlit-mnist/build.envd b/examples/streamlit-mnist/build.envd index b71f33d7a..e6624e344 100644 --- a/examples/streamlit-mnist/build.envd +++ b/examples/streamlit-mnist/build.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.vscode_extensions( [ "ms-python.python", @@ -14,7 +14,7 @@ def build(): def serve(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") configure_streamlit(8501) configure_mnist() diff --git a/pkg/app/interactive.go b/pkg/app/interactive.go index b782ad18d..63283048d 100644 --- a/pkg/app/interactive.go +++ b/pkg/app/interactive.go @@ -225,7 +225,7 @@ func startQuestion(input input) { func generateFile(clicontext *cli.Context) error { var buf bytes.Buffer buf.WriteString("def build():\n") - buf.WriteString(fmt.Sprintf("%sbase(os=\"ubuntu20.04\", language=\"%s\")\n", indentation, selectionMap[LabelLanguage][0])) + buf.WriteString(fmt.Sprintf("%sbase(os=\"ubuntu22.04\", language=\"%s\")\n", indentation, selectionMap[LabelLanguage][0])) buf.WriteString(generatePackagesStr("python", selectionMap[LabelPythonPackage])) buf.WriteString(generatePackagesStr("r", selectionMap[LabelRPackage])) if len(selectionMap[LabelPythonRequirement]) > 0 { diff --git a/pkg/app/template/julia.envd b/pkg/app/template/julia.envd index 12f347ece..b68fc8718 100644 --- a/pkg/app/template/julia.envd +++ b/pkg/app/template/julia.envd @@ -1,6 +1,6 @@ def build(): - # Use ubuntu20.04 as base image and install julia - base(os="ubuntu20.04", language="julia") + # Use ubuntu22.04 as base image and install julia + base(os="ubuntu22.04", language="julia") # Uncomment line below to enable Pypi mirror # config.julia_pkg_server(url="https://mirrors.tuna.tsinghua.edu.cn/julia") diff --git a/pkg/app/template/r.envd b/pkg/app/template/r.envd index bbf60a229..5f7696271 100644 --- a/pkg/app/template/r.envd +++ b/pkg/app/template/r.envd @@ -1,6 +1,6 @@ def build(): - # Use ubuntu20.04 as base image and install r - base(os="ubuntu20.04", language="r") + # Use ubuntu22.04 as base image and install r + base(os="ubuntu22.04", language="r") # Add the packages you are using here install.r_packages( diff --git a/pkg/lang/frontend/starlark/v0/interpreter_test.go b/pkg/lang/frontend/starlark/v0/interpreter_test.go index 99fa4f8ee..fd62e86b3 100644 --- a/pkg/lang/frontend/starlark/v0/interpreter_test.go +++ b/pkg/lang/frontend/starlark/v0/interpreter_test.go @@ -24,6 +24,6 @@ var _ = Describe("Starlark", func() { filename := "testdata/test.envd" hash, err := GetEnvdProgramHash(filename) Expect(err).NotTo(HaveOccurred()) - Expect(hash).To(Equal("cff1c81818116d42")) + Expect(hash).To(Equal("92dcb859b270c28c")) }) }) diff --git a/pkg/lang/frontend/starlark/v0/testdata/test.envd b/pkg/lang/frontend/starlark/v0/testdata/test.envd index 9c0e3cb02..33bee60f7 100644 --- a/pkg/lang/frontend/starlark/v0/testdata/test.envd +++ b/pkg/lang/frontend/starlark/v0/testdata/test.envd @@ -1,5 +1,5 @@ def build(): - base(os="ubuntu20.04", language="python3") + base(os="ubuntu22.04", language="python3") install.python_packages( name=[ "numpy", diff --git a/pkg/lang/ir/v0/consts.go b/pkg/lang/ir/v0/consts.go index 172fe25a5..4e68795ca 100644 --- a/pkg/lang/ir/v0/consts.go +++ b/pkg/lang/ir/v0/consts.go @@ -17,7 +17,7 @@ package v0 import "github.com/tensorchord/envd/pkg/util/fileutil" const ( - osDefault = "ubuntu20.04" + osDefault = "ubuntu22.04" languageDefault = "python" languageVersionDefault = "3" CUDNNVersionDefault = "8" diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go index 5d29fbf4d..7bbdbafe6 100644 --- a/pkg/lang/ir/v0/system.go +++ b/pkg/lang/ir/v0/system.go @@ -218,7 +218,7 @@ func (g *generalGraph) compileBase() (llb.State, error) { base = g.preparePythonBase(llb.Image(types.PythonBaseImage)) case "julia": base = llb.Image(fmt.Sprintf( - "docker.io/%s/julia:1.8rc1-ubuntu20.04-envd-%s", org, v)) + "docker.io/%s/julia:1.8rc1-ubuntu22.04-envd-%s", org, v)) } } else { base = g.compileCUDAPackages("nvidia/cuda") diff --git a/pkg/lang/ir/v1/consts.go b/pkg/lang/ir/v1/consts.go index 2920a8244..75b7ab566 100644 --- a/pkg/lang/ir/v1/consts.go +++ b/pkg/lang/ir/v1/consts.go @@ -17,7 +17,7 @@ package v1 import "github.com/tensorchord/envd/pkg/util/fileutil" const ( - defaultImage = "ubuntu:20.04" + defaultImage = "ubuntu:22.04" CUDNNVersionDefault = "8" aptSourceFilePath = "/etc/apt/sources.list" diff --git a/pkg/types/envd.go b/pkg/types/envd.go index cf019cdab..16b78336b 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -35,7 +35,7 @@ const ( DefaultCondaPath = "/opt/conda/envs/envd/bin:/opt/conda/bin:/home/envd/.local/bin" DefaultJuliaPath = "/usr/local/julia/bin" // image - PythonBaseImage = "ubuntu:20.04" + PythonBaseImage = "ubuntu:22.04" EnvdStarshipImage = "tensorchord/starship:v0.0.1" // supervisor HorustImage = "tensorchord/horust:v0.2.3" From 1df6b9f2022397da2fc19e16b4046b73fbf83ca3 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 17 Jan 2025 20:04:50 +0800 Subject: [PATCH 314/355] docs: fix discord and x badge (#1951) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1d9635d01..0c1d8bcc5 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ </div> <p align=center> -<a href="https://discord.gg/KqswhpVgdU"><img alt="discord invitation link" src="https://dcbadge.vercel.app/api/server/KqswhpVgdU?style=flat"></a> -<a href="https://twitter.com/TensorChord"><img src="https://img.shields.io/twitter/follow/tensorchord?style=social" alt="trackgit-views" /></a> +<a href="https://discord.gg/KqswhpVgdU"><img alt="discord invitation link" src="https://img.shields.io/discord/974584200327991326?style=flat&logo=discord&cacheSeconds=60"></a> +<a href="https://twitter.com/TensorChord"><img src="https://img.shields.io/twitter/follow/tensorchord?style=flat&logo=X&cacheSeconds=60" alt="trackgit-views" /></a> <a href="https://pypi.org/project/envd"><img src="https://img.shields.io/pypi/pyversions/envd" alt="Python Version" /></a> <a href="https://github.com/tensorchord/envd#contributors-"><img alt="all-contributors" src="https://img.shields.io/github/all-contributors/tensorchord/envd/main"></a> <a href="https://pypi.org/project/envd/"><img alt="envd package downloads" src="https://static.pepy.tech/personalized-badge/envd?period=month&units=international_system&left_color=grey&right_color=brightgreen&left_text=downloads/month"</a> From e737022c3fe3af01f8bf391feca6e48b08e71753 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 20 Jan 2025 11:37:37 +0800 Subject: [PATCH 315/355] feat: support fish shell (#1952) * feat: support fish shell Signed-off-by: Keming <kemingyang@tensorchord.ai> * Update pkg/lang/ir/v1/shell.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Keming <kemingy94@gmail.com> * fix lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> Signed-off-by: Keming <kemingy94@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- pkg/lang/ir/v1/conda.go | 19 ++++++++++++++++--- pkg/lang/ir/v1/interface.go | 2 +- pkg/lang/ir/v1/shell.go | 30 +++++++++++++++++++++++++++++- pkg/lang/ir/v1/types.go | 1 + 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index cd8ea5a4b..61a19a82a 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -28,7 +28,7 @@ import ( ) const ( - builderImage = "curlimages/curl:7.86.0" + builderImage = "curlimages/curl:8.11.1" condaVersionDefault = "py311_24.11.1-0" microMambaImage = "mambaorg/micromamba:1.0.0" condaRootPrefix = "/opt/conda" @@ -39,10 +39,19 @@ const ( channels: - defaults ` - mambaActivate = ` + mambaActivateBash = ` #!/bin/sh eval "$(/opt/conda/bin/micromamba shell hook --shell=bash)" || return $? micromamba activate "$@" +` + mambaActivateFish = ` +#!/usr/bin/fish +/opt/conda/bin/micromamba shell hook --shell=fish | source +micromamba activate $argv +` + condaActivateFish = ` +#!/usr/bin/fish +conda activate $argv ` ) @@ -174,6 +183,8 @@ func (g generalGraph) installMiniConda(root llb.State) llb.State { llb.WithCustomName("[internal] create conda directory")). Run(llb.Shlexf("bash -c '%s'", installCondaBash), llb.WithCustomName("[internal] install conda")).Root(). + File(llb.Mkfile(fmt.Sprintf("%s/activate.fish", condaBinDir), 0755, []byte(condaActivateFish)), + llb.WithCustomName("[internal] create the conda activate.fish file")). File(llb.Rm(condaSourcePath), llb.WithCustomName("[internal] rm conda source file")) return conda } @@ -194,8 +205,10 @@ func (g *generalGraph) installMicroMamba(root llb.State) llb.State { llb.WithCustomName("[internal] copy micromamba binary")). File(llb.Mkfile(fmt.Sprintf("%s/.mambarc", condaRootPrefix), 0644, []byte(mambaRc)), llb.WithCustomName("[internal] create the mamba rc file")). - File(llb.Mkfile(fmt.Sprintf("%s/activate", condaBinDir), 0755, []byte(mambaActivate)), + File(llb.Mkfile(fmt.Sprintf("%s/activate", condaBinDir), 0755, []byte(mambaActivateBash)), llb.WithCustomName("[internal] create the mamba activate file")). + File(llb.Mkfile(fmt.Sprintf("%s/activate.fish", condaBinDir), 0755, []byte(mambaActivateFish)), + llb.WithCustomName("[internal] create the mamba activate.fish file")). Run(llb.Shlexf("update-alternatives --install /usr/bin/conda conda %s/micromamba 1", condaBinDir), llb.WithCustomName("[internal] update alternative micromamba to conda")). Run(llb.Shlexf("bash -c \"%s/micromamba shell init --shell bash\"", condaBinDir), diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index 4f3794089..09354f378 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -197,7 +197,7 @@ func JuliaPackageServer(url string) error { func Shell(shell string) error { g := DefaultGraph.(*generalGraph) - g.Shell = shell + g.Shell = strings.ToLower(shell) return nil } diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index d1b129f1c..240c95fd8 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -53,6 +53,8 @@ diverged = "<>" renamed = "r" deleted = "x" ` + + fishVersion = "4.0b1" ) func (g *generalGraph) compileShell(root llb.State) (_ llb.State, err error) { @@ -63,6 +65,9 @@ func (g *generalGraph) compileShell(root llb.State) (_ llb.State, err error) { if err != nil { return llb.State{}, err } + } else if g.Shell == shellFish { + g.RuntimeEnviron["SHELL"] = "/usr/bin/fish" + root = g.compileFish(root) } if g.CondaConfig != nil { root = g.compileCondaShell(root) @@ -76,13 +81,17 @@ func (g *generalGraph) compileCondaShell(root llb.State) llb.State { findDir = fileutil.EnvdHomeDir } rcPath := findDir(".bashrc") + activateFile := "activate" if g.Shell == shellZSH { rcPath = findDir(".zshrc") + } else if g.Shell == shellFish { + rcPath = findDir(".config/fish/config.fish") + activateFile = "activate.fish" } run := root. Run(llb.Shlexf("bash -c \"%s\"", g.condaInitShell(g.Shell)), llb.WithCustomNamef("[internal] init conda %s env", g.Shell)). - Run(llb.Shlexf(`bash -c 'echo "source %s/activate envd" >> %s'`, condaBinDir, rcPath), + Run(llb.Shlexf(`bash -c 'echo "source %s/%s envd" >> %s'`, condaBinDir, activateFile, rcPath), llb.WithCustomNamef("[internal] add conda environment to %s", rcPath)) return run.Root() } @@ -102,6 +111,10 @@ func (g *generalGraph) compilePrompt(root llb.State) llb.State { run = run.Run( llb.Shlexf(`bash -c 'echo "eval \"\$(starship init zsh)\"" >> %s'`, fileutil.EnvdHomeDir(".zshrc")), llb.WithCustomName("[internal] setting prompt zsh config")).Root() + } else if g.Shell == shellFish { + run = run.Run( + llb.Shlexf(`bash -c 'echo "starship init fish | source" >> %s'`, fileutil.EnvdHomeDir(".config/fish/config.fish")), + llb.WithCustomName("[internal] setting prompt fish config")).Root() } return run } @@ -126,3 +139,18 @@ func (g generalGraph) compileZSH(root llb.State) (llb.State, error) { File(llb.Mkfile(zshrcPath, 0666, []byte(m.ZSHRC()))) return zshrc, nil } + +func (g generalGraph) compileFish(root llb.State) llb.State { + base := llb.Image(builderImage) + builder := base.Run( + llb.Shlexf(`sh -c "wget -qO- https://github.com/fish-shell/fish-shell/releases/download/%s/fish-static-linux-$(uname -m).tar.xz | tar -xJf - -C /tmp || exit 1"`, fishVersion), + llb.WithCustomName("[internal] download fish shell"), + ).Root() + root = root.File( + llb.Copy(builder, "/tmp/fish", "/usr/bin/fish"), + llb.WithCustomName("[internal] copy fish shell from the builder image")). + Run(llb.Shlex("fish --install"), + llb.WithCustomName("[internal] install fish shell")).Root() + + return root +} diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 53e658c04..2a6f7073e 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -97,4 +97,5 @@ type generalGraph struct { const ( shellBASH = "bash" shellZSH = "zsh" + shellFish = "fish" ) From 600e0df522b773076fcc2f89600362e23ad4d223 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 20 Jan 2025 18:07:00 +0800 Subject: [PATCH 316/355] fix: use ubuntu 22.04 for all the dind related tests (#1955) * test context v1 Signed-off-by: Keming <kemingyang@tensorchord.ai> * workflow dispatch Signed-off-by: Keming <kemingyang@tensorchord.ai> * update cache and ginkgo version Signed-off-by: Keming <kemingyang@tensorchord.ai> * test different port Signed-off-by: Keming <kemingyang@tensorchord.ai> * run on 22.04 Signed-off-by: Keming <kemingyang@tensorchord.ai> * run on 22.04 Signed-off-by: Keming <kemingyang@tensorchord.ai> * use 24.04 for the rest explicitly Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 82 ++++----------------------------- .github/workflows/envd-lint.yml | 1 + .github/workflows/nightly.yml | 72 ----------------------------- go.mod | 8 ++-- go.sum | 16 +++---- 5 files changed, 23 insertions(+), 156 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 73d06049c..45d6f1b92 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -16,6 +16,7 @@ on: - 'Makefile' - 'go.**' merge_group: + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -24,7 +25,7 @@ concurrency: jobs: typos-check: name: Spell Check with Typos - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout Actions Repository uses: actions/checkout@v4 @@ -34,21 +35,12 @@ jobs: config: ./typos.toml lint: name: lint - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/setup-go@v5 with: go-version: 'stable' - uses: actions/checkout@v4 - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - name: Add license run: | make addlicense && git add pkg cmd && @@ -67,7 +59,7 @@ jobs: ENVD_ANALYTICS: false strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-24.04] runs-on: ${{ matrix.os }} steps: - name: Check out code @@ -76,15 +68,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - name: Verify mockgen run: | make generate && git add pkg && @@ -103,7 +86,7 @@ jobs: ENVD_ANALYTICS: false strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] runs-on: ${{ matrix.os }} steps: - name: Check out code @@ -112,15 +95,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -139,7 +113,7 @@ jobs: ENVD_ANALYTICS: false strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] runs-on: ${{ matrix.os }} steps: - name: Check out code @@ -148,15 +122,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -175,7 +140,7 @@ jobs: ENVD_ANALYTICS: false strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] runs-on: ${{ matrix.os }} steps: - name: Check out code @@ -184,15 +149,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -211,7 +167,7 @@ jobs: ENVD_ANALYTICS: false strategy: matrix: - os: [ubuntu-latest] + os: [ubuntu-22.04] runs-on: ${{ matrix.os }} steps: - name: Check out code @@ -220,15 +176,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -247,7 +194,7 @@ jobs: ENVD_ANALYTICS: false strategy: matrix: - os: [ubuntu-latest, macos-latest] + os: [ubuntu-24.04, macos-latest] runs-on: ${{ matrix.os }} steps: - name: Check out code @@ -256,15 +203,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - name: Build run: make @@ -276,7 +214,7 @@ jobs: - e2e-lang - e2e-cli-v1 - e2e-lang-v1 - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Check out code uses: actions/checkout@v4 diff --git a/.github/workflows/envd-lint.yml b/.github/workflows/envd-lint.yml index ff7d31edf..880768bf4 100644 --- a/.github/workflows/envd-lint.yml +++ b/.github/workflows/envd-lint.yml @@ -18,6 +18,7 @@ on: - '**.ipynb' - 'Makefile' merge_group: + workflow_dispatch: concurrency: group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index d8a648456..e618d6f77 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -20,15 +20,6 @@ jobs: with: go-version: 'stable' - uses: actions/checkout@v4 - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - name: Add license run: | make addlicense && git add pkg cmd && @@ -57,15 +48,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - name: Verify mockgen run: | make generate && git add pkg && @@ -94,15 +76,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -131,15 +104,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -205,15 +169,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - name: Build run: make e2e-doc: @@ -233,15 +188,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e doc test @@ -270,15 +216,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e test @@ -344,15 +281,6 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - uses: actions-ecosystem/action-get-latest-tag@v1 id: get-latest-tag - name: e2e doc test diff --git a/go.mod b/go.mod index 5db876400..864cdb99f 100644 --- a/go.mod +++ b/go.mod @@ -29,8 +29,8 @@ require ( github.com/moby/term v0.5.0 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/ginkgo/v2 v2.19.0 - github.com/onsi/gomega v1.34.1 + github.com/onsi/ginkgo/v2 v2.22.2 + github.com/onsi/gomega v1.36.2 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.0 github.com/pkg/errors v0.9.1 @@ -103,7 +103,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 // indirect + github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect @@ -204,7 +204,7 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect google.golang.org/grpc v1.67.0 // indirect - google.golang.org/protobuf v1.35.1 // indirect + google.golang.org/protobuf v1.36.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 9f2ff2887..ae6a1286d 100644 --- a/go.sum +++ b/go.sum @@ -511,8 +511,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6 h1:k7nVchz72niMH6YLQNvHSdIE7iqsQxK1P41mySCvssg= -github.com/google/pprof v0.0.0-20240424215950-a892ee059fd6/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= +github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= @@ -702,14 +702,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= -github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= +github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k= -github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY= +github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= +github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -1477,8 +1477,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= +google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= From f6d9fd280221de5ad4d0045e7e50755568ed3ff0 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 20 Jan 2025 18:30:37 +0800 Subject: [PATCH 317/355] feat: use PyPI OIDC for release (#1957) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 16 ++++++++-------- ...erfile => julia1.8rc1-ubuntu22.04.Dockerfile} | 0 2 files changed, 8 insertions(+), 8 deletions(-) rename base-images/{julia1.8rc1-ubuntu20.04.Dockerfile => julia1.8rc1-ubuntu22.04.Dockerfile} (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6115a099b..07ef0a5eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,6 +45,8 @@ jobs: if: github.repository == 'tensorchord/envd' && startsWith(github.ref, 'refs/tags/v') runs-on: ${{ matrix.os }} timeout-minutes: 20 + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing strategy: matrix: os: [macos-13, ubuntu-22.04] @@ -83,14 +85,12 @@ jobs: python -m pip install wheel python setup.py sdist mv dist/*.tar.gz wheelhouse/ - - name: Upload to PyPI - env: - TWINE_USERNAME: __token__ - TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }} - run: | - python -m pip install --upgrade pip - python -m pip install twine - python -m twine upload wheelhouse/* + - name: Publish package distributions to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + packages-dir: wheelhouse/ + skip-existing: true + verbose: true image_publish: name: Build & push images # only trigger on main repo when tag starts with v diff --git a/base-images/julia1.8rc1-ubuntu20.04.Dockerfile b/base-images/julia1.8rc1-ubuntu22.04.Dockerfile similarity index 100% rename from base-images/julia1.8rc1-ubuntu20.04.Dockerfile rename to base-images/julia1.8rc1-ubuntu22.04.Dockerfile From 7f311854f1103c9bf104bdcc3d2a7fa2a2168b25 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 20 Jan 2025 19:15:15 +0800 Subject: [PATCH 318/355] feat: update pypi meta, fix macos upload (#1958) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 8 +++----- setup.py | 9 +++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 07ef0a5eb..e9ab3606c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -86,11 +86,9 @@ jobs: python setup.py sdist mv dist/*.tar.gz wheelhouse/ - name: Publish package distributions to PyPI - uses: pypa/gh-action-pypi-publish@release/v1 - with: - packages-dir: wheelhouse/ - skip-existing: true - verbose: true + run: | + python -m pip install twine + python -m twine upload --skip-existing wheelhouse/* image_publish: name: Build & push images # only trigger on main repo when tag starts with v diff --git a/setup.py b/setup.py index fc2c63cca..e172c849c 100644 --- a/setup.py +++ b/setup.py @@ -88,11 +88,9 @@ def get_version(): "Intended Audience :: Science/Research", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", - "Programming Language :: Python :: 3.9", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", + "Programming Language :: Python", + "Programming Language :: Python :: 2", + "Programming Language :: Python :: 3", ] @@ -110,7 +108,6 @@ def get_version(): author_email="envd-maintainers@tensorchord.ai", packages=find_packages(), include_package_data=True, - python_requires=">=3.6", data_files=[("bin", ["bin/envd"])], classifiers=classifiers, zip_safe=False, From 72e3b495ab776b5ba524217099ed7a2c88cbd909 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 20 Jan 2025 22:56:42 +0800 Subject: [PATCH 319/355] fix(ci): release on ubuntu with wheels from previous steps (#1960) * fix: release on ubuntu:24.04 with gh-action-pypi-publish Signed-off-by: Keming <kemingyang@tensorchord.ai> * test ghcr Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 114 +++++++++++++++++++--------------- 1 file changed, 64 insertions(+), 50 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e9ab3606c..38db5ebd6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -3,10 +3,10 @@ name: release on: release: types: [published] + workflow_dispatch: jobs: goreleaser: - if: github.repository == 'tensorchord/envd' runs-on: ubuntu-latest steps: - name: Checkout @@ -17,7 +17,7 @@ jobs: uses: actions/setup-go@v5 with: go-version: 'stable' - - name: Docker Login + - name: Login to Docker uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERIO_USERNAME }} @@ -39,56 +39,72 @@ jobs: dist/envd_linux_amd64_v1/envd dist/envd_darwin_all/envd if-no-files-found: error - pypi_publish: + python_build: needs: goreleaser - # only trigger on main repo when tag starts with v - if: github.repository == 'tensorchord/envd' && startsWith(github.ref, 'refs/tags/v') runs-on: ${{ matrix.os }} - timeout-minutes: 20 - permissions: - id-token: write # IMPORTANT: this permission is mandatory for trusted publishing strategy: matrix: os: [macos-13, ubuntu-22.04] steps: - - uses: actions/checkout@v4 - - name: Get gobin - uses: actions/download-artifact@v4 - with: - name: gobin_${{ github.event.release.tag_name }} - path: dist/ - - name: Configure linux build environment - if: runner.os == 'Linux' - run: | - mkdir -p bin - mv dist/envd_linux_amd64_v1/envd bin/envd - chmod +x bin/envd - - name: Configure macOS build environment - if: runner.os == 'macOS' - run: | - mkdir -p bin - mv dist/envd_darwin_all/envd bin/envd - chmod +x bin/envd - - name: setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.11' - - name: Build wheels - uses: pypa/cibuildwheel@v2.22.0 - env: - CIBW_ARCHS_MACOS: arm64, x86_64 - CIBW_ARCHS_LINUX: auto64 - CIBW_SKIP: pp* - - name: Build source distribution - if: runner.os == 'Linux' # Only release source under linux to avoid conflict - run: | - python -m pip install wheel - python setup.py sdist - mv dist/*.tar.gz wheelhouse/ - - name: Publish package distributions to PyPI - run: | - python -m pip install twine - python -m twine upload --skip-existing wheelhouse/* + - uses: actions/checkout@v4 + - name: Get gobin + uses: actions/download-artifact@v4 + with: + name: gobin_${{ github.event.release.tag_name }} + path: dist/ + - name: Configure linux build environment + if: runner.os == 'Linux' + run: | + mkdir -p bin + mv dist/envd_linux_amd64_v1/envd bin/envd + chmod +x bin/envd + - name: Configure macOS build environment + if: runner.os == 'macOS' + run: | + mkdir -p bin + mv dist/envd_darwin_all/envd bin/envd + chmod +x bin/envd + - name: setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.11' + - name: Build wheels + uses: pypa/cibuildwheel@v2.22.0 + env: + CIBW_ARCHS_MACOS: arm64, x86_64 + CIBW_ARCHS_LINUX: auto64 + CIBW_SKIP: pp* + - name: Build source distribution + if: runner.os == 'Linux' # Only release source under linux to avoid conflict + run: | + python -m pip install wheel + python setup.py sdist + mv dist/*.tar.gz wheelhouse/ + - name: Upload artifacts + uses: actions/upload-artifact@v4 + with: + name: pypi_${{ github.event.release.tag_name }}_${{ matrix.os }} + path: wheelhouse/ + retention-days: 1 + pypi_publish: + needs: python_build + # only trigger on main repo when tag starts with v + if: github.repository == 'tensorchord/envd' && startsWith(github.ref, 'refs/tags/v') + runs-on: ubuntu-24.04 + permissions: + id-token: write # IMPORTANT: this permission is mandatory for trusted publishing + steps: + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + pattern: pypi_${{ github.event.release.tag_name }}_* + merge-multiple: true + path: dist/ + - name: Upload to PyPI + uses: pypa/gh-action-pypi-publish@release/v1 + with: + skip-existing: true + verbose: true image_publish: name: Build & push images # only trigger on main repo when tag starts with v @@ -118,6 +134,8 @@ jobs: envd_starship_publish: name: Push starship image to Docker Hub runs-on: ubuntu-latest + # only trigger on main repo when tag starts with v + if: github.repository == 'tensorchord/envd' && startsWith(github.ref, 'refs/tags/v') needs: goreleaser steps: - uses: actions/checkout@v4 @@ -177,10 +195,6 @@ jobs: tag_suffix: "" - build_func: build_gpu_11_6 tag_suffix: "-cuda-11.6.2-cudnn-8" - - build_func: build_gpu_11_8 - tag_suffix: "-cuda-11.8.0-cudnn-8" - - build_func: build_gpu_12_3 - tag_suffix: "-cuda-12.3.2-cudnn-9" needs: image_publish steps: - uses: actions/checkout@v4 From 3b1d272c583350b00aaa1f5b599cec171d35732f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 13:33:10 +0800 Subject: [PATCH 320/355] docs: updated CHANGELOG.md (#1956) --- CHANGELOG.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ac388685e..44cd5b2b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,41 @@ # Changelog +## v0.4.3 (2025-01-20) + + * [72e3b49](https://github.com/tensorchord/envd/commit/72e3b495ab776b5ba524217099ed7a2c88cbd909) fix(ci): release on ubuntu with wheels from previous steps (#1960) + +### Contributors + + * Keming + +## v0.4.2 (2025-01-20) + + * [7f31185](https://github.com/tensorchord/envd/commit/7f311854f1103c9bf104bdcc3d2a7fa2a2168b25) feat: update pypi meta, fix macos upload (#1958) + +### Contributors + + * Keming + +## v0.4.1 (2025-01-20) + + * [f6d9fd2](https://github.com/tensorchord/envd/commit/f6d9fd280221de5ad4d0045e7e50755568ed3ff0) feat: use PyPI OIDC for release (#1957) + +### Contributors + + * Keming + +## v0.4.0 (2025-01-20) + + * [600e0df](https://github.com/tensorchord/envd/commit/600e0df522b773076fcc2f89600362e23ad4d223) fix: use ubuntu 22.04 for all the dind related tests (#1955) + * [e737022](https://github.com/tensorchord/envd/commit/e737022c3fe3af01f8bf391feca6e48b08e71753) feat: support fish shell (#1952) + * [1a54052](https://github.com/tensorchord/envd/commit/1a54052e339cb60e2f4efe04ffddd0ffc798af0f) feat: upgrade to ubuntu 22.04 (#1939) + * [5ad6168](https://github.com/tensorchord/envd/commit/5ad61681f6d7e699de69020d498f01e6d818eabe) feat: upgrade to python 3.11 (#1940) + * [1155c9a](https://github.com/tensorchord/envd/commit/1155c9ae53aca62e61584b49cef45b027b4b9557) docs(readme): fix github markdown callout (#1945) + +### Contributors + + * Keming + ## v0.3.47 (2025-01-09) * [95bb1c3](https://github.com/tensorchord/envd/commit/95bb1c37f177c6e6e4ba49d4429e6e8a1ebc6ea5) feat(cache): update cuda & cudnn version (#1943) From 307fdbda756887e2ba0acc09565965b4d7fe5865 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sun, 26 Jan 2025 16:16:04 +0800 Subject: [PATCH 321/355] fix: chown all the files for mamba under `/opt/conda` (#1961) fix: chown all the files for mamba under /opt/conda Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 1 + envd/api/v1/__init__.py | 2 +- pkg/lang/ir/v1/conda.go | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 38db5ebd6..352ddc2b1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -189,6 +189,7 @@ jobs: if: github.repository == 'tensorchord/envd' && startsWith(github.ref, 'refs/tags/v') runs-on: ubuntu-latest strategy: + fail-fast: false matrix: include: - build_func: build diff --git a/envd/api/v1/__init__.py b/envd/api/v1/__init__.py index 1124ff4ab..d51c6f86f 100644 --- a/envd/api/v1/__init__.py +++ b/envd/api/v1/__init__.py @@ -47,7 +47,7 @@ def shell(name: str = "bash"): """Interactive shell Args: - name (str): shell name (i.e. `zsh`, `bash`) + name (str): shell name (i.e. `zsh`, `bash`, `fish`) """ diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index 61a19a82a..d88ed9ee8 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -163,7 +163,8 @@ func (g generalGraph) compileCondaEnvironment(root llb.State) (llb.State, error) func (g *generalGraph) installConda(root llb.State) llb.State { if g.Dev { // We only create envd user for dev env. - g.UserDirectories = append(g.UserDirectories, fmt.Sprintf("%s/envs/envd", condaRootPrefix)) + // `micromamba` needs to modify the conda directory. + g.UserDirectories = append(g.UserDirectories, condaRootPrefix) } if g.CondaConfig.UseMicroMamba { return g.installMicroMamba(root) From e32ab1455150bce2461168791a11ea416d33121f Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sat, 1 Feb 2025 23:24:10 +0800 Subject: [PATCH 322/355] feat: remove envd v0 (#1963) * feat: remove envd v0 Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix envd init Signed-off-by: Keming <kemingyang@tensorchord.ai> * init with multiple lang Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 66 --- .github/workflows/nightly.yml | 93 ----- .github/workflows/release.yml | 26 -- Makefile | 34 +- base-images/.dockerignore | 2 - base-images/build.sh | 47 --- .../julia1.8rc1-ubuntu22.04.Dockerfile | 98 ----- base-images/r4.2.Dockerfile | 46 --- base-images/remote-cache/build.envd | 25 +- e2e/{v0 => }/cli/build_test.go | 2 +- e2e/{v0 => }/cli/bytecode_hash_test.go | 2 +- e2e/{v1 => }/cli/context_test.go | 2 +- e2e/{v1 => }/cli/get_env_test.go | 2 +- e2e/{v1 => }/cli/init_test.go | 2 +- e2e/{v1 => }/cli/moby_test.go | 2 +- e2e/{v1 => }/cli/quick_start_test.go | 2 +- e2e/{v0 => }/cli/suite_test.go | 0 .../cli/testdata/build-test/build.envd | 0 .../cli/testdata/custom-image-test/build.envd | 0 .../cli/testdata/quick-start/build.envd | 0 e2e/{v0 => }/cli/testdata/quick-start/demo.py | 0 e2e/{v1 => }/cli/testdata/up-test/build.envd | 0 e2e/{v0 => }/cli/up_test.go | 2 +- e2e/{v1 => }/docs/docs_gpu_test.go | 2 +- e2e/{v1 => }/docs/docs_test.go | 2 +- e2e/{v1 => }/docs/extra_lang_test.go | 2 +- e2e/{v1 => }/docs/julia_mnist_test.go | 2 +- e2e/{v1 => }/docs/rlang_mnist_test.go | 2 +- e2e/{v1 => }/docs/suite_test.go | 0 e2e/{v1 => }/docs/testdata/complex/build.envd | 0 e2e/{v1 => }/docs/testdata/envdlib/build.envd | 0 .../docs/testdata/getting_started/build.envd | 0 e2e/{v1 => }/docs/testdata/julia/build.envd | 0 .../docs/testdata/julia_mnist/build.envd | 0 .../docs/testdata/julia_mnist/mnist.jl | 0 e2e/{v1 => }/docs/testdata/jupyter/build.envd | 0 e2e/{v1 => }/docs/testdata/minimal/build.envd | 0 e2e/{v1 => }/docs/testdata/rlang/build.envd | 0 .../docs/testdata/rlang_mnist/build.envd | 0 .../docs/testdata/rlang_mnist/mnist.r | 0 e2e/{v1 => }/e2e_helper.go | 0 e2e/{v0 => }/language/python_test.go | 2 +- e2e/{v1 => }/language/runtime_test.go | 2 +- e2e/{v0 => }/language/suite_test.go | 0 .../language/testdata/python/conda/build.envd | 0 .../language/testdata/python/conda/env.yaml | 0 .../language/testdata/python/conda/setup.py | 0 .../testdata/python/conda_channel/build.envd | 0 .../testdata/python/conda_channel/env.yaml | 0 .../testdata/python/hybrid/build.envd | 0 .../testdata/python/hybrid/requirements.txt | 0 .../testdata/python/packages/build.envd | 0 .../testdata/python/requirements/build.envd | 0 .../python/requirements/requirements.txt | 0 .../testdata/python/requirements/setup.py | 0 e2e/{v1 => }/language/testdata/run/build.envd | 0 .../language/testdata/runtime/build.envd | 0 .../language/testdata/runtime/demo.py | 0 e2e/v0/cli/context_test.go | 111 ------ e2e/v0/cli/get_env_test.go | 44 -- e2e/v0/cli/init_test.go | 70 ---- e2e/v0/cli/quick_start_test.go | 36 -- e2e/v0/cli/testdata/build-test/build.envd | 2 - .../cli/testdata/custom-image-test/build.envd | 8 - e2e/v0/cli/testdata/quick-start/build.envd | 8 - e2e/v0/cli/testdata/up-test/build.envd | 12 - e2e/v0/docs/docs_gpu_test.go | 27 -- e2e/v0/docs/docs_test.go | 112 ------ e2e/v0/docs/suite_test.go | 34 -- e2e/v0/docs/testdata/complex/build.envd | 31 -- e2e/v0/docs/testdata/envdlib/build.envd | 6 - .../docs/testdata/getting_started/build.envd | 10 - e2e/v0/docs/testdata/jupyter/build.envd | 9 - e2e/v0/docs/testdata/minimal/build.envd | 7 - e2e/v0/e2e_helper.go | 165 -------- e2e/v0/language/runtime_test.go | 40 -- .../language/testdata/python/conda/build.envd | 3 - .../testdata/python/conda_channel/build.envd | 10 - .../testdata/python/hybrid/build.envd | 2 - .../testdata/python/packages/build.envd | 2 - .../testdata/python/requirements/build.envd | 2 - e2e/v0/language/testdata/run/build.envd | 11 - e2e/v0/language/testdata/runtime/build.envd | 14 - e2e/v1/cli/build_test.go | 95 ----- e2e/v1/cli/bytecode_hash_test.go | 61 --- e2e/v1/cli/suite_test.go | 34 -- e2e/v1/cli/testdata/quick-start/demo.py | 5 - e2e/v1/cli/up_test.go | 76 ---- e2e/v1/language/python_test.go | 66 --- e2e/v1/language/suite_test.go | 34 -- .../language/testdata/python/conda/env.yaml | 9 - .../language/testdata/python/conda/setup.py | 11 - .../testdata/python/conda_channel/env.yaml | 3 - .../testdata/python/hybrid/requirements.txt | 1 - .../python/requirements/requirements.txt | 2 - .../testdata/python/requirements/setup.py | 11 - e2e/v1/language/testdata/runtime/demo.py | 5 - pkg/app/interactive.go | 30 +- pkg/builder/builder_test.go | 4 +- pkg/envd/docker.go | 2 +- .../frontend/starlark/v0/builtin/builtin.go | 20 - .../frontend/starlark/v0/config/config.go | 248 ------------ pkg/lang/frontend/starlark/v0/config/const.go | 29 -- pkg/lang/frontend/starlark/v0/data/const.go | 21 - pkg/lang/frontend/starlark/v0/data/rule.go | 54 --- pkg/lang/frontend/starlark/v0/data/util.go | 53 --- .../frontend/starlark/v0/install/const.go | 25 -- .../frontend/starlark/v0/install/install.go | 204 ---------- pkg/lang/frontend/starlark/v0/interpreter.go | 209 ---------- .../frontend/starlark/v0/interpreter_test.go | 29 -- pkg/lang/frontend/starlark/v0/io/const.go | 20 - pkg/lang/frontend/starlark/v0/io/io.go | 70 ---- .../frontend/starlark/v0/runtime/const.go | 24 -- .../frontend/starlark/v0/runtime/runtime.go | 238 ----------- .../starlark/v0/starlark_suite_test.go | 27 -- .../frontend/starlark/v0/testdata/test.envd | 8 - .../frontend/starlark/v0/universe/const.go | 25 -- .../frontend/starlark/v0/universe/universe.go | 141 ------- pkg/lang/ir/graph.go | 6 +- pkg/lang/ir/util.go | 4 +- pkg/lang/ir/v0/cache.go | 32 -- pkg/lang/ir/v0/checker.go | 79 ---- pkg/lang/ir/v0/compile.go | 375 ------------------ pkg/lang/ir/v0/conda.go | 161 -------- pkg/lang/ir/v0/consts.go | 42 -- pkg/lang/ir/v0/custom.go | 80 ---- pkg/lang/ir/v0/editor.go | 120 ------ pkg/lang/ir/v0/editor_test.go | 97 ----- pkg/lang/ir/v0/fs.go | 25 -- pkg/lang/ir/v0/git.go | 45 --- pkg/lang/ir/v0/install-conda.sh | 24 -- pkg/lang/ir/v0/install-mamba.sh | 15 - pkg/lang/ir/v0/interface.go | 312 --------------- pkg/lang/ir/v0/julia.go | 104 ----- pkg/lang/ir/v0/python.go | 220 ---------- pkg/lang/ir/v0/r.go | 96 ----- pkg/lang/ir/v0/shell.go | 124 ------ pkg/lang/ir/v0/supervisor.go | 120 ------ pkg/lang/ir/v0/system.go | 307 -------------- pkg/lang/ir/v0/types.go | 95 ----- pkg/lang/ir/v0/user.go | 80 ---- pkg/lang/ir/v0/util.go | 146 ------- pkg/lang/ir/v0/util_test.go | 78 ---- pkg/lang/ir/v1/compile.go | 22 +- pkg/lang/version/version.go | 31 +- 145 files changed, 99 insertions(+), 5878 deletions(-) delete mode 100644 base-images/.dockerignore delete mode 100755 base-images/build.sh delete mode 100644 base-images/julia1.8rc1-ubuntu22.04.Dockerfile delete mode 100644 base-images/r4.2.Dockerfile rename e2e/{v0 => }/cli/build_test.go (98%) rename e2e/{v0 => }/cli/bytecode_hash_test.go (97%) rename e2e/{v1 => }/cli/context_test.go (98%) rename e2e/{v1 => }/cli/get_env_test.go (97%) rename e2e/{v1 => }/cli/init_test.go (98%) rename e2e/{v1 => }/cli/moby_test.go (98%) rename e2e/{v1 => }/cli/quick_start_test.go (96%) rename e2e/{v0 => }/cli/suite_test.go (100%) rename e2e/{v1 => }/cli/testdata/build-test/build.envd (100%) rename e2e/{v1 => }/cli/testdata/custom-image-test/build.envd (100%) rename e2e/{v1 => }/cli/testdata/quick-start/build.envd (100%) rename e2e/{v0 => }/cli/testdata/quick-start/demo.py (100%) rename e2e/{v1 => }/cli/testdata/up-test/build.envd (100%) rename e2e/{v0 => }/cli/up_test.go (98%) rename e2e/{v1 => }/docs/docs_gpu_test.go (95%) rename e2e/{v1 => }/docs/docs_test.go (98%) rename e2e/{v1 => }/docs/extra_lang_test.go (96%) rename e2e/{v1 => }/docs/julia_mnist_test.go (97%) rename e2e/{v1 => }/docs/rlang_mnist_test.go (96%) rename e2e/{v1 => }/docs/suite_test.go (100%) rename e2e/{v1 => }/docs/testdata/complex/build.envd (100%) rename e2e/{v1 => }/docs/testdata/envdlib/build.envd (100%) rename e2e/{v1 => }/docs/testdata/getting_started/build.envd (100%) rename e2e/{v1 => }/docs/testdata/julia/build.envd (100%) rename e2e/{v1 => }/docs/testdata/julia_mnist/build.envd (100%) rename e2e/{v1 => }/docs/testdata/julia_mnist/mnist.jl (100%) rename e2e/{v1 => }/docs/testdata/jupyter/build.envd (100%) rename e2e/{v1 => }/docs/testdata/minimal/build.envd (100%) rename e2e/{v1 => }/docs/testdata/rlang/build.envd (100%) rename e2e/{v1 => }/docs/testdata/rlang_mnist/build.envd (100%) rename e2e/{v1 => }/docs/testdata/rlang_mnist/mnist.r (100%) rename e2e/{v1 => }/e2e_helper.go (100%) rename e2e/{v0 => }/language/python_test.go (98%) rename e2e/{v1 => }/language/runtime_test.go (96%) rename e2e/{v0 => }/language/suite_test.go (100%) rename e2e/{v1 => }/language/testdata/python/conda/build.envd (100%) rename e2e/{v0 => }/language/testdata/python/conda/env.yaml (100%) rename e2e/{v0 => }/language/testdata/python/conda/setup.py (100%) rename e2e/{v1 => }/language/testdata/python/conda_channel/build.envd (100%) rename e2e/{v0 => }/language/testdata/python/conda_channel/env.yaml (100%) rename e2e/{v1 => }/language/testdata/python/hybrid/build.envd (100%) rename e2e/{v0 => }/language/testdata/python/hybrid/requirements.txt (100%) rename e2e/{v1 => }/language/testdata/python/packages/build.envd (100%) rename e2e/{v1 => }/language/testdata/python/requirements/build.envd (100%) rename e2e/{v0 => }/language/testdata/python/requirements/requirements.txt (100%) rename e2e/{v0 => }/language/testdata/python/requirements/setup.py (100%) rename e2e/{v1 => }/language/testdata/run/build.envd (100%) rename e2e/{v1 => }/language/testdata/runtime/build.envd (100%) rename e2e/{v0 => }/language/testdata/runtime/demo.py (100%) delete mode 100644 e2e/v0/cli/context_test.go delete mode 100644 e2e/v0/cli/get_env_test.go delete mode 100644 e2e/v0/cli/init_test.go delete mode 100644 e2e/v0/cli/quick_start_test.go delete mode 100644 e2e/v0/cli/testdata/build-test/build.envd delete mode 100644 e2e/v0/cli/testdata/custom-image-test/build.envd delete mode 100644 e2e/v0/cli/testdata/quick-start/build.envd delete mode 100644 e2e/v0/cli/testdata/up-test/build.envd delete mode 100644 e2e/v0/docs/docs_gpu_test.go delete mode 100644 e2e/v0/docs/docs_test.go delete mode 100644 e2e/v0/docs/suite_test.go delete mode 100644 e2e/v0/docs/testdata/complex/build.envd delete mode 100644 e2e/v0/docs/testdata/envdlib/build.envd delete mode 100644 e2e/v0/docs/testdata/getting_started/build.envd delete mode 100644 e2e/v0/docs/testdata/jupyter/build.envd delete mode 100644 e2e/v0/docs/testdata/minimal/build.envd delete mode 100644 e2e/v0/e2e_helper.go delete mode 100644 e2e/v0/language/runtime_test.go delete mode 100644 e2e/v0/language/testdata/python/conda/build.envd delete mode 100644 e2e/v0/language/testdata/python/conda_channel/build.envd delete mode 100644 e2e/v0/language/testdata/python/hybrid/build.envd delete mode 100644 e2e/v0/language/testdata/python/packages/build.envd delete mode 100644 e2e/v0/language/testdata/python/requirements/build.envd delete mode 100644 e2e/v0/language/testdata/run/build.envd delete mode 100644 e2e/v0/language/testdata/runtime/build.envd delete mode 100644 e2e/v1/cli/build_test.go delete mode 100644 e2e/v1/cli/bytecode_hash_test.go delete mode 100644 e2e/v1/cli/suite_test.go delete mode 100644 e2e/v1/cli/testdata/quick-start/demo.py delete mode 100644 e2e/v1/cli/up_test.go delete mode 100644 e2e/v1/language/python_test.go delete mode 100644 e2e/v1/language/suite_test.go delete mode 100644 e2e/v1/language/testdata/python/conda/env.yaml delete mode 100644 e2e/v1/language/testdata/python/conda/setup.py delete mode 100644 e2e/v1/language/testdata/python/conda_channel/env.yaml delete mode 100644 e2e/v1/language/testdata/python/hybrid/requirements.txt delete mode 100644 e2e/v1/language/testdata/python/requirements/requirements.txt delete mode 100644 e2e/v1/language/testdata/python/requirements/setup.py delete mode 100644 e2e/v1/language/testdata/runtime/demo.py delete mode 100644 pkg/lang/frontend/starlark/v0/builtin/builtin.go delete mode 100644 pkg/lang/frontend/starlark/v0/config/config.go delete mode 100644 pkg/lang/frontend/starlark/v0/config/const.go delete mode 100644 pkg/lang/frontend/starlark/v0/data/const.go delete mode 100644 pkg/lang/frontend/starlark/v0/data/rule.go delete mode 100644 pkg/lang/frontend/starlark/v0/data/util.go delete mode 100644 pkg/lang/frontend/starlark/v0/install/const.go delete mode 100644 pkg/lang/frontend/starlark/v0/install/install.go delete mode 100644 pkg/lang/frontend/starlark/v0/interpreter.go delete mode 100644 pkg/lang/frontend/starlark/v0/interpreter_test.go delete mode 100644 pkg/lang/frontend/starlark/v0/io/const.go delete mode 100644 pkg/lang/frontend/starlark/v0/io/io.go delete mode 100644 pkg/lang/frontend/starlark/v0/runtime/const.go delete mode 100644 pkg/lang/frontend/starlark/v0/runtime/runtime.go delete mode 100644 pkg/lang/frontend/starlark/v0/starlark_suite_test.go delete mode 100644 pkg/lang/frontend/starlark/v0/testdata/test.envd delete mode 100644 pkg/lang/frontend/starlark/v0/universe/const.go delete mode 100644 pkg/lang/frontend/starlark/v0/universe/universe.go delete mode 100644 pkg/lang/ir/v0/cache.go delete mode 100644 pkg/lang/ir/v0/checker.go delete mode 100644 pkg/lang/ir/v0/compile.go delete mode 100644 pkg/lang/ir/v0/conda.go delete mode 100644 pkg/lang/ir/v0/consts.go delete mode 100644 pkg/lang/ir/v0/custom.go delete mode 100644 pkg/lang/ir/v0/editor.go delete mode 100644 pkg/lang/ir/v0/editor_test.go delete mode 100644 pkg/lang/ir/v0/fs.go delete mode 100644 pkg/lang/ir/v0/git.go delete mode 100644 pkg/lang/ir/v0/install-conda.sh delete mode 100644 pkg/lang/ir/v0/install-mamba.sh delete mode 100644 pkg/lang/ir/v0/interface.go delete mode 100644 pkg/lang/ir/v0/julia.go delete mode 100644 pkg/lang/ir/v0/python.go delete mode 100644 pkg/lang/ir/v0/r.go delete mode 100644 pkg/lang/ir/v0/shell.go delete mode 100644 pkg/lang/ir/v0/supervisor.go delete mode 100644 pkg/lang/ir/v0/system.go delete mode 100644 pkg/lang/ir/v0/types.go delete mode 100644 pkg/lang/ir/v0/user.go delete mode 100644 pkg/lang/ir/v0/util.go delete mode 100644 pkg/lang/ir/v0/util_test.go diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 45d6f1b92..6ed64ff15 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -106,33 +106,6 @@ jobs: with: name: e2e-cli-coverage-out path: e2e-cli-coverage.out - e2e-cli-v1: - name: e2e-cli-v1 - env: - # Disable telemetry. - ENVD_ANALYTICS: false - strategy: - matrix: - os: [ubuntu-22.04] - runs-on: ${{ matrix.os }} - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - uses: actions-ecosystem/action-get-latest-tag@v1 - id: get-latest-tag - - name: e2e test - run: make e2e-cli-test-v1 - env: - GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-cli-v1-coverage-out - path: e2e-cli-v1-coverage.out e2e-lang: name: e2e-lang env: @@ -160,33 +133,6 @@ jobs: with: name: e2e-lang-coverage-out path: e2e-lang-coverage.out - e2e-lang-v1: - name: e2e-lang-v1 - env: - # Disable telemetry. - ENVD_ANALYTICS: false - strategy: - matrix: - os: [ubuntu-22.04] - runs-on: ${{ matrix.os }} - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - uses: actions-ecosystem/action-get-latest-tag@v1 - id: get-latest-tag - - name: e2e test - run: make e2e-lang-test-v1 - env: - GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-lang-v1-coverage-out - path: e2e-lang-v1-coverage.out build: name: build env: @@ -212,8 +158,6 @@ jobs: - test - e2e-cli - e2e-lang - - e2e-cli-v1 - - e2e-lang-v1 runs-on: ubuntu-24.04 steps: - name: Check out code @@ -241,16 +185,6 @@ jobs: with: name: e2e-lang-coverage-out path: merge - - name: Get cli v1 e2e coverage report - uses: actions/download-artifact@v4 - with: - name: e2e-cli-v1-coverage-out - path: merge - - name: Get language v1 e2e coverage report - uses: actions/download-artifact@v4 - with: - name: e2e-lang-v1-coverage-out - path: merge - name: Merge all coverage reports uses: cutecutecat/go-cover-merge@v1 with: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e618d6f77..d115248d5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -199,96 +199,3 @@ jobs: with: name: e2e-doc-coverage-out path: e2e-doc-coverage.out - e2e-cli-v1: - name: e2e-cli-v1 - if: github.repository == 'tensorchord/envd' - env: - # Disable telemetry. - ENVD_ANALYTICS: false - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - uses: actions-ecosystem/action-get-latest-tag@v1 - id: get-latest-tag - - name: e2e test - run: make e2e-cli-test-v1 - env: - GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-cli-v1-coverage-out - path: e2e-cli-v1-coverage.out - e2e-lang-v1: - name: e2e-lang-v1 - if: github.repository == 'tensorchord/envd' - env: - # Disable telemetry. - ENVD_ANALYTICS: false - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - name: Cache Go modules - uses: actions/cache@preview - with: - path: ~/go/pkg/mod - key: ${{ runner.os }}-build-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.OS }}-build-${{ env.cache-name }}- - ${{ runner.OS }}-build- - ${{ runner.OS }}- - - uses: actions-ecosystem/action-get-latest-tag@v1 - id: get-latest-tag - - name: e2e test - run: make e2e-lang-test-v1 - env: - GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-lang-v1-coverage-out - path: e2e-lang-v1-coverage.out - e2e-doc-v1: - name: e2e-doc-v1 - if: github.repository == 'tensorchord/envd' - env: - # Disable telemetry. - ENVD_ANALYTICS: false - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - uses: actions-ecosystem/action-get-latest-tag@v1 - id: get-latest-tag - - name: e2e doc test - run: make e2e-doc-test-v1 - env: - GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-doc-v1-coverage-out - path: e2e-doc-v1-coverage.out diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 352ddc2b1..f20ee6aff 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -105,32 +105,6 @@ jobs: with: skip-existing: true verbose: true - image_publish: - name: Build & push images - # only trigger on main repo when tag starts with v - if: github.repository == 'tensorchord/envd' && startsWith(github.ref, 'refs/tags/v') - runs-on: ubuntu-latest - needs: goreleaser - steps: - - uses: actions/checkout@v4 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - name: Cache Docker layers - uses: actions/cache@v4 - id: cache - with: - path: /tmp/.buildx-cache - key: ${{ runner.os }}-buildx-${{ github.sha }} - restore-keys: | - ${{ runner.os }}-buildx- - - name: Docker Login - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERIO_USERNAME }} - password: ${{ secrets.DOCKERIO_TOKEN }} - - name: Docker Buildx - run: | - ./base-images/build.sh envd_starship_publish: name: Push starship image to Docker Hub runs-on: ubuntu-latest diff --git a/Makefile b/Makefile index 1a3ac5319..ede0a1d69 100644 --- a/Makefile +++ b/Makefile @@ -188,7 +188,6 @@ e2e-test: -X $(ROOT)/pkg/version.developmentFlag=true" \ -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-coverage.out ./e2e - e2e-cli-test: @go test -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ -X $(ROOT)/pkg/version.buildDate=$(BUILD_DATE) \ @@ -196,7 +195,7 @@ e2e-cli-test: -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ -X $(ROOT)/pkg/version.gitTag="$(shell git describe --tags --abbrev=0)" \ -X $(ROOT)/pkg/version.developmentFlag=true" \ - -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-cli-coverage.out ./e2e/v0/cli + -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-cli-coverage.out ./e2e/cli e2e-lang-test: @go test -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ @@ -205,7 +204,7 @@ e2e-lang-test: -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ -X $(ROOT)/pkg/version.gitTag="$(shell git describe --tags --abbrev=0)" \ -X $(ROOT)/pkg/version.developmentFlag=true" \ - -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-lang-coverage.out ./e2e/v0/language + -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-lang-coverage.out ./e2e/language e2e-doc-test: @go test -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ @@ -214,34 +213,7 @@ e2e-doc-test: -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ -X $(ROOT)/pkg/version.gitTag="$(shell git describe --tags --abbrev=0)" \ -X $(ROOT)/pkg/version.developmentFlag=true" \ - -race -v -timeout 60m -coverpkg=./pkg/... -coverprofile=e2e-doc-coverage.out ./e2e/v0/docs - -e2e-cli-test-v1: - @go test -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ - -X $(ROOT)/pkg/version.buildDate=$(BUILD_DATE) \ - -X $(ROOT)/pkg/version.gitCommit=$(GIT_COMMIT) \ - -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ - -X $(ROOT)/pkg/version.gitTag="$(shell git describe --tags --abbrev=0)" \ - -X $(ROOT)/pkg/version.developmentFlag=true" \ - -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-cli-v1-coverage.out ./e2e/v1/cli - -e2e-lang-test-v1: - @go test -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ - -X $(ROOT)/pkg/version.buildDate=$(BUILD_DATE) \ - -X $(ROOT)/pkg/version.gitCommit=$(GIT_COMMIT) \ - -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ - -X $(ROOT)/pkg/version.gitTag="$(shell git describe --tags --abbrev=0)" \ - -X $(ROOT)/pkg/version.developmentFlag=true" \ - -race -v -timeout 20m -coverpkg=./pkg/... -coverprofile=e2e-lang-v1-coverage.out ./e2e/v1/language - -e2e-doc-test-v1: - @go test -ldflags "-s -w -X $(ROOT)/pkg/version.version=$(VERSION) \ - -X $(ROOT)/pkg/version.buildDate=$(BUILD_DATE) \ - -X $(ROOT)/pkg/version.gitCommit=$(GIT_COMMIT) \ - -X $(ROOT)/pkg/version.gitTreeState=$(GIT_TREE_STATE) \ - -X $(ROOT)/pkg/version.gitTag="$(shell git describe --tags --abbrev=0)" \ - -X $(ROOT)/pkg/version.developmentFlag=true" \ - -race -v -timeout 60m -coverpkg=./pkg/... -coverprofile=e2e-doc-v1-coverage.out ./e2e/v1/docs + -race -v -timeout 60m -coverpkg=./pkg/... -coverprofile=e2e-doc-coverage.out ./e2e/docs clean: ## Clean the outputs and artifacts @-rm -vrf ${OUTPUT_DIR} diff --git a/base-images/.dockerignore b/base-images/.dockerignore deleted file mode 100644 index 9ad039d21..000000000 --- a/base-images/.dockerignore +++ /dev/null @@ -1,2 +0,0 @@ -build.sh -*.Dockerfile diff --git a/base-images/build.sh b/base-images/build.sh deleted file mode 100755 index 95d562c5d..000000000 --- a/base-images/build.sh +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env bash -# Copyright 2022 The envd Authors -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - - -set -euo pipefail - -ROOT_DIR=`dirname $0` - -GIT_TAG_VERSION=$(git describe --tags --abbrev=0) -DOCKER_HUB_ORG="${DOCKER_HUB_ORG:-tensorchord}" -ENVD_OS="${ENVD_OS:-ubuntu22.04}" -JULIA_VERSION="${JULIA_VERSION:-1.8rc1}" -RLANG_VERSION="${RLANG_VERSION:-4.2}" - -cd ${ROOT_DIR} -# ubuntu 22.04 build require moby/buildkit version greater than 0.8.1 -docker buildx create --use --platform linux/x86_64,linux/arm64,linux/ppc64le --driver-opt image=moby/buildkit:v0.10.3 - -# https://github.com/docker/buildx/issues/495#issuecomment-754688157 -docker run --rm --privileged multiarch/qemu-user-static --reset -p yes - -# TODO(gaocegege): Support linux/arm64 -docker buildx build \ - --build-arg ENVD_VERSION=${GIT_TAG_VERSION} \ - --build-arg ENVD_SSHD_IMAGE=tensorchord/envd-sshd-from-scratch \ - -t ${DOCKER_HUB_ORG}/r-base:${RLANG_VERSION}-envd-${GIT_TAG_VERSION} \ - --pull --push --platform linux/x86_64 \ - -f r${RLANG_VERSION}.Dockerfile . -docker buildx build \ - --build-arg ENVD_VERSION=${GIT_TAG_VERSION} \ - --build-arg ENVD_SSHD_IMAGE=tensorchord/envd-sshd-from-scratch \ - -t ${DOCKER_HUB_ORG}/julia:${JULIA_VERSION}-${ENVD_OS}-envd-${GIT_TAG_VERSION} \ - --pull --push --platform linux/x86_64,linux/arm64 \ - -f julia${JULIA_VERSION}-${ENVD_OS}.Dockerfile . -cd - > /dev/null diff --git a/base-images/julia1.8rc1-ubuntu22.04.Dockerfile b/base-images/julia1.8rc1-ubuntu22.04.Dockerfile deleted file mode 100644 index 64b49edc1..000000000 --- a/base-images/julia1.8rc1-ubuntu22.04.Dockerfile +++ /dev/null @@ -1,98 +0,0 @@ -ARG ENVD_VERSION -ARG ENVD_SSHD_IMAGE -FROM ubuntu:22.04 as base - -FROM base as base-amd64 - -FROM base as base-arm64 - -FROM ${ENVD_SSHD_IMAGE}:${ENVD_VERSION} AS envd - -FROM base-${TARGETARCH} - -LABEL maintainer "envd-maintainers <envd-maintainers@tensorchord.ai>" - -ENV DEBIAN_FRONTEND noninteractive -ENV PATH="/usr/bin:${PATH}" -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends --no-install-suggests --fix-missing \ - bash-static libtinfo5 libncursesw5 apt-utils \ - # conda dependencies - bzip2 ca-certificates libglib2.0-0 libsm6 libxext6 libxrender1 mercurial \ - procps subversion wget \ - # envd dependencies - python3 curl openssh-client git tini sudo python3-pip zsh vim \ - && rm -rf /var/lib/apt/lists/* \ - # prompt - && curl --proto '=https' --tlsv1.2 -sSf https://starship.rs/install.sh | sh -s -- -y - -COPY --from=envd /usr/bin/envd-sshd /var/envd/bin/envd-sshd - -ENV JULIA_PATH /usr/local/julia -ENV PATH $JULIA_PATH/bin:$PATH - -# https://julialang.org/juliareleases.asc -# Julia (Binary signing key) <buildbot@julialang.org> -ENV JULIA_GPG 3673DF529D9049477F76B37566E3C7DC03D6E495 - -# https://julialang.org/downloads/ -ENV JULIA_VERSION 1.8.0-rc1 - -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - if ! command -v gpg > /dev/null; then \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - gnupg \ - dirmngr \ - ; \ - rm -rf /var/lib/apt/lists/*; \ - fi; \ - \ -# https://julialang.org/downloads/#julia-command-line-version -# https://julialang-s3.julialang.org/bin/checksums/julia-1.8.0-rc1.sha256 - arch="$(dpkg --print-architecture)"; \ - case "$arch" in \ - 'amd64') \ - url='https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.0-rc1-linux-x86_64.tar.gz'; \ - sha256='a47efddaaccb424dad6499f870ab7f792c50827d23cc64cb9873280318337966'; \ - ;; \ - 'arm64') \ - url='https://julialang-s3.julialang.org/bin/linux/aarch64/1.8/julia-1.8.0-rc1-linux-aarch64.tar.gz'; \ - sha256='15dd553754aa15e514f28ed00ed4cfdb1f8cf883f3398b803ef5cf05e767a2fb'; \ - ;; \ - 'i386') \ - url='https://julialang-s3.julialang.org/bin/linux/x86/1.8/julia-1.8.0-rc1-linux-i686.tar.gz'; \ - sha256='bed81bb5e2cd60abb824b40cbb1ed2f27c9f974dfd7fbc43ce1684e5462bae2b'; \ - ;; \ - *) \ - echo >&2 "error: current architecture ($arch) does not have a corresponding Julia binary release"; \ - exit 1; \ - ;; \ - esac; \ - \ - curl -fL -o julia.tar.gz.asc "$url.asc"; \ - curl -fL -o julia.tar.gz "$url"; \ - \ - echo "$sha256 *julia.tar.gz" | sha256sum --strict --check -; \ - \ - export GNUPGHOME="$(mktemp -d)"; \ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$JULIA_GPG"; \ - gpg --batch --verify julia.tar.gz.asc julia.tar.gz; \ - command -v gpgconf > /dev/null && gpgconf --kill all; \ - rm -rf "$GNUPGHOME" julia.tar.gz.asc; \ - \ - mkdir "$JULIA_PATH"; \ - tar -xzf julia.tar.gz -C "$JULIA_PATH" --strip-components 1; \ - rm julia.tar.gz; \ - \ - apt-mark auto '.*' > /dev/null; \ - [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - \ -# smoke test - julia --version diff --git a/base-images/r4.2.Dockerfile b/base-images/r4.2.Dockerfile deleted file mode 100644 index 1a05f2d4a..000000000 --- a/base-images/r4.2.Dockerfile +++ /dev/null @@ -1,46 +0,0 @@ -ARG ENVD_VERSION -ARG ENVD_SSHD_IMAGE -FROM rocker/r-ver:4.2 as base - -FROM base as base-amd64 - -FROM base as base-arm64 - -FROM ${ENVD_SSHD_IMAGE}:${ENVD_VERSION} AS envd - -FROM base-${TARGETARCH} - -ARG TARGETARCH - -LABEL maintainer "envd-maintainers <envd-maintainers@tensorchord.ai>" - -ENV DEBIAN_FRONTEND noninteractive -ENV PATH="/usr/bin:${PATH}" -ENV LANG C.UTF-8 -ENV LC_ALL C.UTF-8 - -RUN apt-get update && \ - apt-get install -y --no-install-recommends --no-install-suggests --fix-missing \ - apt-utils bash-static libtinfo5 libncursesw5 \ - # rstudio dependencies - file libapparmor1 libclang-dev libcurl4-openssl-dev libedit2 libobjc4 wget libssl-dev \ - libpq5 psmisc procps python3-setuptools pwgen lsb-release \ - # envd dependencies - python3 curl openssh-client git tini sudo zsh vim \ - && rm -rf /var/lib/apt/lists/* \ - # prompt - && curl --proto '=https' --tlsv1.2 -sSf https://starship.rs/install.sh | sh -s -- -y - -RUN set -x && \ - UNAME_M="$(uname -m)" && \ - if [ "${UNAME_M}" = "x86_64" ]; then \ - RSTUDIO_URL="https://download2.rstudio.org/server/jammy/amd64/rstudio-server-2022.12.0-353-amd64.deb"; \ - elif [ "${UNAME_M}" = "aarch64" ]; then \ - RSTUDIO_URL="https://rstudio.org/download/latest/latest/server/focal/rstudio-server-latest-arm64.deb"; \ - fi && \ - DOWNLOAD_FILE=rstudio-server.deb && \ - wget "${RSTUDIO_URL}" -O ${DOWNLOAD_FILE} && \ - dpkg -i "$DOWNLOAD_FILE" && \ - rm ${DOWNLOAD_FILE} && rm -f /var/lib/rstudio-server/secure-cookie-key - -COPY --from=envd /usr/bin/envd-sshd /var/envd/bin/envd-sshd diff --git a/base-images/remote-cache/build.envd b/base-images/remote-cache/build.envd index b774dc865..53a884ff2 100644 --- a/base-images/remote-cache/build.envd +++ b/base-images/remote-cache/build.envd @@ -1,32 +1,45 @@ def build(): - base(os="ubuntu22.04", language="python3") + """default""" + base(dev=True) + install.conda() + install.python() def build_gpu_11_2(): """tensorflow""" - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() install.cuda(version="11.2.2", cudnn="8") def build_gpu_11_3(): """pytorch""" - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() install.cuda(version="11.3.1", cudnn="8") def build_gpu_11_6(): """pytorch""" - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() install.cuda(version="11.6.2", cudnn="8") def build_gpu_11_8(): """pytorch""" - base(os="ubuntu20.04", language="python3") + base(dev=True) + install.conda() + install.python() install.cuda(version="11.8.0", cudnn="8") def build_gpu_12_3(): """pytorch""" - base(os="ubuntu20.04", language="python3") + base(dev=True) + install.conda() + install.python() install.cuda(version="12.3.2", cudnn="9") diff --git a/e2e/v0/cli/build_test.go b/e2e/cli/build_test.go similarity index 98% rename from e2e/v0/cli/build_test.go rename to e2e/cli/build_test.go index 25c8070ad..41d2f28d5 100644 --- a/e2e/v0/cli/build_test.go +++ b/e2e/cli/build_test.go @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" diff --git a/e2e/v0/cli/bytecode_hash_test.go b/e2e/cli/bytecode_hash_test.go similarity index 97% rename from e2e/v0/cli/bytecode_hash_test.go rename to e2e/cli/bytecode_hash_test.go index 7487f300e..d980c716c 100644 --- a/e2e/v0/cli/bytecode_hash_test.go +++ b/e2e/cli/bytecode_hash_test.go @@ -21,7 +21,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e" ) func appendSomeToFile(path string) { diff --git a/e2e/v1/cli/context_test.go b/e2e/cli/context_test.go similarity index 98% rename from e2e/v1/cli/context_test.go rename to e2e/cli/context_test.go index 078ebb9ef..8d6df5a9c 100644 --- a/e2e/v1/cli/context_test.go +++ b/e2e/cli/context_test.go @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/types" diff --git a/e2e/v1/cli/get_env_test.go b/e2e/cli/get_env_test.go similarity index 97% rename from e2e/v1/cli/get_env_test.go rename to e2e/cli/get_env_test.go index 36034ece0..d068dde2a 100644 --- a/e2e/v1/cli/get_env_test.go +++ b/e2e/cli/get_env_test.go @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" ) diff --git a/e2e/v1/cli/init_test.go b/e2e/cli/init_test.go similarity index 98% rename from e2e/v1/cli/init_test.go rename to e2e/cli/init_test.go index e9ab8b528..8a8ca7b1b 100644 --- a/e2e/v1/cli/init_test.go +++ b/e2e/cli/init_test.go @@ -21,7 +21,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/util/fileutil" diff --git a/e2e/v1/cli/moby_test.go b/e2e/cli/moby_test.go similarity index 98% rename from e2e/v1/cli/moby_test.go rename to e2e/cli/moby_test.go index 692fcbff6..0115759f5 100644 --- a/e2e/v1/cli/moby_test.go +++ b/e2e/cli/moby_test.go @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/types" ) diff --git a/e2e/v1/cli/quick_start_test.go b/e2e/cli/quick_start_test.go similarity index 96% rename from e2e/v1/cli/quick_start_test.go rename to e2e/cli/quick_start_test.go index 3879b80f4..6e5fc64a7 100644 --- a/e2e/v1/cli/quick_start_test.go +++ b/e2e/cli/quick_start_test.go @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("e2e quickstart", Ordered, func() { diff --git a/e2e/v0/cli/suite_test.go b/e2e/cli/suite_test.go similarity index 100% rename from e2e/v0/cli/suite_test.go rename to e2e/cli/suite_test.go diff --git a/e2e/v1/cli/testdata/build-test/build.envd b/e2e/cli/testdata/build-test/build.envd similarity index 100% rename from e2e/v1/cli/testdata/build-test/build.envd rename to e2e/cli/testdata/build-test/build.envd diff --git a/e2e/v1/cli/testdata/custom-image-test/build.envd b/e2e/cli/testdata/custom-image-test/build.envd similarity index 100% rename from e2e/v1/cli/testdata/custom-image-test/build.envd rename to e2e/cli/testdata/custom-image-test/build.envd diff --git a/e2e/v1/cli/testdata/quick-start/build.envd b/e2e/cli/testdata/quick-start/build.envd similarity index 100% rename from e2e/v1/cli/testdata/quick-start/build.envd rename to e2e/cli/testdata/quick-start/build.envd diff --git a/e2e/v0/cli/testdata/quick-start/demo.py b/e2e/cli/testdata/quick-start/demo.py similarity index 100% rename from e2e/v0/cli/testdata/quick-start/demo.py rename to e2e/cli/testdata/quick-start/demo.py diff --git a/e2e/v1/cli/testdata/up-test/build.envd b/e2e/cli/testdata/up-test/build.envd similarity index 100% rename from e2e/v1/cli/testdata/up-test/build.envd rename to e2e/cli/testdata/up-test/build.envd diff --git a/e2e/v0/cli/up_test.go b/e2e/cli/up_test.go similarity index 98% rename from e2e/v0/cli/up_test.go rename to e2e/cli/up_test.go index f4c436194..d3c296616 100644 --- a/e2e/v0/cli/up_test.go +++ b/e2e/cli/up_test.go @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/driver/docker" "github.com/tensorchord/envd/pkg/envd" diff --git a/e2e/v1/docs/docs_gpu_test.go b/e2e/docs/docs_gpu_test.go similarity index 95% rename from e2e/v1/docs/docs_gpu_test.go rename to e2e/docs/docs_gpu_test.go index c9426ccd1..8be7664ee 100644 --- a/e2e/v1/docs/docs_gpu_test.go +++ b/e2e/docs/docs_gpu_test.go @@ -17,7 +17,7 @@ package docs import ( . "github.com/onsi/ginkgo/v2" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("check GPU examples in documentation", Ordered, func() { diff --git a/e2e/v1/docs/docs_test.go b/e2e/docs/docs_test.go similarity index 98% rename from e2e/v1/docs/docs_test.go rename to e2e/docs/docs_test.go index 7b02ee28e..9d17408f0 100644 --- a/e2e/v1/docs/docs_test.go +++ b/e2e/docs/docs_test.go @@ -22,7 +22,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" "github.com/tensorchord/envd/pkg/app" "github.com/tensorchord/envd/pkg/home" ) diff --git a/e2e/v1/docs/extra_lang_test.go b/e2e/docs/extra_lang_test.go similarity index 96% rename from e2e/v1/docs/extra_lang_test.go rename to e2e/docs/extra_lang_test.go index 18d03ff9e..23add40d1 100644 --- a/e2e/v1/docs/extra_lang_test.go +++ b/e2e/docs/extra_lang_test.go @@ -17,7 +17,7 @@ package docs import ( . "github.com/onsi/ginkgo/v2" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("lang", Ordered, func() { diff --git a/e2e/v1/docs/julia_mnist_test.go b/e2e/docs/julia_mnist_test.go similarity index 97% rename from e2e/v1/docs/julia_mnist_test.go rename to e2e/docs/julia_mnist_test.go index 297c99f17..f9525d171 100644 --- a/e2e/v1/docs/julia_mnist_test.go +++ b/e2e/docs/julia_mnist_test.go @@ -20,7 +20,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("julia_mnist", Ordered, func() { diff --git a/e2e/v1/docs/rlang_mnist_test.go b/e2e/docs/rlang_mnist_test.go similarity index 96% rename from e2e/v1/docs/rlang_mnist_test.go rename to e2e/docs/rlang_mnist_test.go index 0737e124d..210c1a66f 100644 --- a/e2e/v1/docs/rlang_mnist_test.go +++ b/e2e/docs/rlang_mnist_test.go @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("rlang_mnist", Ordered, func() { diff --git a/e2e/v1/docs/suite_test.go b/e2e/docs/suite_test.go similarity index 100% rename from e2e/v1/docs/suite_test.go rename to e2e/docs/suite_test.go diff --git a/e2e/v1/docs/testdata/complex/build.envd b/e2e/docs/testdata/complex/build.envd similarity index 100% rename from e2e/v1/docs/testdata/complex/build.envd rename to e2e/docs/testdata/complex/build.envd diff --git a/e2e/v1/docs/testdata/envdlib/build.envd b/e2e/docs/testdata/envdlib/build.envd similarity index 100% rename from e2e/v1/docs/testdata/envdlib/build.envd rename to e2e/docs/testdata/envdlib/build.envd diff --git a/e2e/v1/docs/testdata/getting_started/build.envd b/e2e/docs/testdata/getting_started/build.envd similarity index 100% rename from e2e/v1/docs/testdata/getting_started/build.envd rename to e2e/docs/testdata/getting_started/build.envd diff --git a/e2e/v1/docs/testdata/julia/build.envd b/e2e/docs/testdata/julia/build.envd similarity index 100% rename from e2e/v1/docs/testdata/julia/build.envd rename to e2e/docs/testdata/julia/build.envd diff --git a/e2e/v1/docs/testdata/julia_mnist/build.envd b/e2e/docs/testdata/julia_mnist/build.envd similarity index 100% rename from e2e/v1/docs/testdata/julia_mnist/build.envd rename to e2e/docs/testdata/julia_mnist/build.envd diff --git a/e2e/v1/docs/testdata/julia_mnist/mnist.jl b/e2e/docs/testdata/julia_mnist/mnist.jl similarity index 100% rename from e2e/v1/docs/testdata/julia_mnist/mnist.jl rename to e2e/docs/testdata/julia_mnist/mnist.jl diff --git a/e2e/v1/docs/testdata/jupyter/build.envd b/e2e/docs/testdata/jupyter/build.envd similarity index 100% rename from e2e/v1/docs/testdata/jupyter/build.envd rename to e2e/docs/testdata/jupyter/build.envd diff --git a/e2e/v1/docs/testdata/minimal/build.envd b/e2e/docs/testdata/minimal/build.envd similarity index 100% rename from e2e/v1/docs/testdata/minimal/build.envd rename to e2e/docs/testdata/minimal/build.envd diff --git a/e2e/v1/docs/testdata/rlang/build.envd b/e2e/docs/testdata/rlang/build.envd similarity index 100% rename from e2e/v1/docs/testdata/rlang/build.envd rename to e2e/docs/testdata/rlang/build.envd diff --git a/e2e/v1/docs/testdata/rlang_mnist/build.envd b/e2e/docs/testdata/rlang_mnist/build.envd similarity index 100% rename from e2e/v1/docs/testdata/rlang_mnist/build.envd rename to e2e/docs/testdata/rlang_mnist/build.envd diff --git a/e2e/v1/docs/testdata/rlang_mnist/mnist.r b/e2e/docs/testdata/rlang_mnist/mnist.r similarity index 100% rename from e2e/v1/docs/testdata/rlang_mnist/mnist.r rename to e2e/docs/testdata/rlang_mnist/mnist.r diff --git a/e2e/v1/e2e_helper.go b/e2e/e2e_helper.go similarity index 100% rename from e2e/v1/e2e_helper.go rename to e2e/e2e_helper.go diff --git a/e2e/v0/language/python_test.go b/e2e/language/python_test.go similarity index 98% rename from e2e/v0/language/python_test.go rename to e2e/language/python_test.go index 169bc7db4..bc07cd7d0 100644 --- a/e2e/v0/language/python_test.go +++ b/e2e/language/python_test.go @@ -17,7 +17,7 @@ package language import ( . "github.com/onsi/ginkgo/v2" - "github.com/tensorchord/envd/e2e/v0" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("python", Ordered, func() { diff --git a/e2e/v1/language/runtime_test.go b/e2e/language/runtime_test.go similarity index 96% rename from e2e/v1/language/runtime_test.go rename to e2e/language/runtime_test.go index 0cf672e4a..9d8b42e71 100644 --- a/e2e/v1/language/runtime_test.go +++ b/e2e/language/runtime_test.go @@ -18,7 +18,7 @@ import ( . "github.com/onsi/ginkgo/v2" . "github.com/onsi/gomega" - "github.com/tensorchord/envd/e2e/v1" + "github.com/tensorchord/envd/e2e" ) var _ = Describe("runtime", Ordered, func() { diff --git a/e2e/v0/language/suite_test.go b/e2e/language/suite_test.go similarity index 100% rename from e2e/v0/language/suite_test.go rename to e2e/language/suite_test.go diff --git a/e2e/v1/language/testdata/python/conda/build.envd b/e2e/language/testdata/python/conda/build.envd similarity index 100% rename from e2e/v1/language/testdata/python/conda/build.envd rename to e2e/language/testdata/python/conda/build.envd diff --git a/e2e/v0/language/testdata/python/conda/env.yaml b/e2e/language/testdata/python/conda/env.yaml similarity index 100% rename from e2e/v0/language/testdata/python/conda/env.yaml rename to e2e/language/testdata/python/conda/env.yaml diff --git a/e2e/v0/language/testdata/python/conda/setup.py b/e2e/language/testdata/python/conda/setup.py similarity index 100% rename from e2e/v0/language/testdata/python/conda/setup.py rename to e2e/language/testdata/python/conda/setup.py diff --git a/e2e/v1/language/testdata/python/conda_channel/build.envd b/e2e/language/testdata/python/conda_channel/build.envd similarity index 100% rename from e2e/v1/language/testdata/python/conda_channel/build.envd rename to e2e/language/testdata/python/conda_channel/build.envd diff --git a/e2e/v0/language/testdata/python/conda_channel/env.yaml b/e2e/language/testdata/python/conda_channel/env.yaml similarity index 100% rename from e2e/v0/language/testdata/python/conda_channel/env.yaml rename to e2e/language/testdata/python/conda_channel/env.yaml diff --git a/e2e/v1/language/testdata/python/hybrid/build.envd b/e2e/language/testdata/python/hybrid/build.envd similarity index 100% rename from e2e/v1/language/testdata/python/hybrid/build.envd rename to e2e/language/testdata/python/hybrid/build.envd diff --git a/e2e/v0/language/testdata/python/hybrid/requirements.txt b/e2e/language/testdata/python/hybrid/requirements.txt similarity index 100% rename from e2e/v0/language/testdata/python/hybrid/requirements.txt rename to e2e/language/testdata/python/hybrid/requirements.txt diff --git a/e2e/v1/language/testdata/python/packages/build.envd b/e2e/language/testdata/python/packages/build.envd similarity index 100% rename from e2e/v1/language/testdata/python/packages/build.envd rename to e2e/language/testdata/python/packages/build.envd diff --git a/e2e/v1/language/testdata/python/requirements/build.envd b/e2e/language/testdata/python/requirements/build.envd similarity index 100% rename from e2e/v1/language/testdata/python/requirements/build.envd rename to e2e/language/testdata/python/requirements/build.envd diff --git a/e2e/v0/language/testdata/python/requirements/requirements.txt b/e2e/language/testdata/python/requirements/requirements.txt similarity index 100% rename from e2e/v0/language/testdata/python/requirements/requirements.txt rename to e2e/language/testdata/python/requirements/requirements.txt diff --git a/e2e/v0/language/testdata/python/requirements/setup.py b/e2e/language/testdata/python/requirements/setup.py similarity index 100% rename from e2e/v0/language/testdata/python/requirements/setup.py rename to e2e/language/testdata/python/requirements/setup.py diff --git a/e2e/v1/language/testdata/run/build.envd b/e2e/language/testdata/run/build.envd similarity index 100% rename from e2e/v1/language/testdata/run/build.envd rename to e2e/language/testdata/run/build.envd diff --git a/e2e/v1/language/testdata/runtime/build.envd b/e2e/language/testdata/runtime/build.envd similarity index 100% rename from e2e/v1/language/testdata/runtime/build.envd rename to e2e/language/testdata/runtime/build.envd diff --git a/e2e/v0/language/testdata/runtime/demo.py b/e2e/language/testdata/runtime/demo.py similarity index 100% rename from e2e/v0/language/testdata/runtime/demo.py rename to e2e/language/testdata/runtime/demo.py diff --git a/e2e/v0/cli/context_test.go b/e2e/v0/cli/context_test.go deleted file mode 100644 index 39234c8ee..000000000 --- a/e2e/v0/cli/context_test.go +++ /dev/null @@ -1,111 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - "os/exec" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v0" - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/home" - "github.com/tensorchord/envd/pkg/types" -) - -var _ = Describe("home context", func() { - defaultContext := "default" - BeforeEach(func() { - Expect(home.Initialize()).To(Succeed()) - }) - When("check the default context", func() { - It("should found the default context", func() { - contexts, err := home.GetManager().ContextList() - Expect(err).NotTo(HaveOccurred()) - Expect(contexts.Current).To(Equal(defaultContext)) - }) - }) - - Describe("add a new context", Ordered, func() { - testContext := "envd_home_test" - testBuilderAddress := "0.0.0.0:12345" - testBuilder := types.BuilderTypeTCP - testRunner := types.RunnerTypeEnvdServer - testRunnerAddress := "http://localhost" - c := types.Context{ - Name: testContext, - Builder: testBuilder, - BuilderAddress: testBuilderAddress, - Runner: testRunner, - RunnerAddress: &testRunnerAddress, - } - - BeforeAll(func() { - err := home.GetManager().ContextCreate(c, true) - Expect(err).NotTo(HaveOccurred()) - }) - - It("should find a new context", func() { - contexts, err := home.GetManager().ContextList() - Expect(err).NotTo(HaveOccurred()) - Expect(contexts.Current).To(Equal(testContext)) - }) - - Describe("connect buildkit through TCP", Ordered, func() { - name := "envd-buildkitd-tcp-test" - buildContext := "testdata/build-test" - dockerArgs := []string{ - "run", "-d", "-p", "12345:8000", "--rm", "--name", name, - "--security-opt", "seccomp=unconfined", "--security-opt", "apparmor=unconfined", - "moby/buildkit:rootless", "--addr", "tcp://0.0.0.0:8000", "--oci-worker-no-process-sandbox", - } - BeforeAll(func() { - cmd := exec.Command("docker", dockerArgs...) - err := cmd.Run() - Expect(err).ToNot(HaveOccurred()) - }) - - It("should be able to build image with TCP context", func() { - args := []string{"envd.test", "--debug", "build", "--path", buildContext} - envdApp := app.New() - e2e.ResetEnvdApp() - err := envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - }) - - AfterAll(func() { - cmd := exec.Command("docker", "stop", name) - err := cmd.Run() - Expect(err).ToNot(HaveOccurred()) - }) - }) - - It("fail to delete the current context", func() { - err := home.GetManager().ContextRemove(testContext) - Expect(err).To(HaveOccurred()) - }) - - AfterAll(func() { - err := home.GetManager().ContextUse(defaultContext) - Expect(err).NotTo(HaveOccurred()) - err = home.GetManager().ContextRemove(testContext) - Expect(err).NotTo(HaveOccurred()) - contexts, err := home.GetManager().ContextList() - Expect(err).NotTo(HaveOccurred()) - Expect(contexts.Current).To(Equal(defaultContext)) - }) - }) -}) diff --git a/e2e/v0/cli/get_env_test.go b/e2e/v0/cli/get_env_test.go deleted file mode 100644 index 946724413..000000000 --- a/e2e/v0/cli/get_env_test.go +++ /dev/null @@ -1,44 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v0" - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/home" -) - -var _ = Describe("get env command", func() { - args := []string{ - "envd.test", "--debug", "envs", "list", - } - BeforeEach(func() { - Expect(home.Initialize()).NotTo(HaveOccurred()) - envdApp := app.New() - err := envdApp.Run([]string{"envd.test", "--debug", "bootstrap"}) - Expect(err).NotTo(HaveOccurred()) - }) - When("given the right arguments", func() { - It("should get the environments successfully", func() { - envdApp := app.New() - e2e.ResetEnvdApp() - err := envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - }) - }) -}) diff --git a/e2e/v0/cli/init_test.go b/e2e/v0/cli/init_test.go deleted file mode 100644 index e9ab8b528..000000000 --- a/e2e/v0/cli/init_test.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - "os" - "path/filepath" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v1" - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/home" - "github.com/tensorchord/envd/pkg/util/fileutil" -) - -var _ = Describe("init project", Ordered, func() { - var path string - BeforeAll(func() { - Expect(home.Initialize()).To(Succeed()) - envdApp := app.New() - err := envdApp.Run([]string{"envd.test", "--debug", "bootstrap"}) - Expect(err).To(Succeed()) - e2e.ResetEnvdApp() - path, err = os.MkdirTemp("", "envd_init_test_*") - Expect(err).To(Succeed()) - err = os.WriteFile(filepath.Join(path, "requirements.txt"), []byte("via"), 0666) - Expect(err).To(Succeed()) - }) - - It("init python env", func() { - envdApp := app.New() - err := envdApp.Run([]string{"envd.test", "--debug", "init", "-p", path}) - Expect(err).To(Succeed()) - exist, err := fileutil.FileExists(filepath.Join(path, "build.envd")) - Expect(err).To(Succeed()) - Expect(exist).To(BeTrue()) - }) - - Describe("run init env", Ordered, func() { - var e *e2e.Example - BeforeAll(func() { - // have to use `path` inside ginkgo closure - e = e2e.NewExample(path, "init_test") - e.RunContainer()() - }) - It("exec installed command inside container", func() { - _, err := e.Exec("via --help") - Expect(err).To(Succeed()) - e.DestroyContainer() - }) - }) - - AfterAll(func() { - os.RemoveAll(path) - }) -}) diff --git a/e2e/v0/cli/quick_start_test.go b/e2e/v0/cli/quick_start_test.go deleted file mode 100644 index f3dddf796..000000000 --- a/e2e/v0/cli/quick_start_test.go +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v0" -) - -var _ = Describe("e2e quickstart", Ordered, func() { - exampleName := "quick-start" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - BeforeAll(e.BuildImage(true)) - BeforeEach(e.RunContainer()) - It("execute python demo.py", func() { - res, err := e.Exec("python demo.py") - Expect(err).To(BeNil()) - Expect(res).To(Equal("[2 3 4]")) - }) - AfterEach(e.DestroyContainer()) -}) diff --git a/e2e/v0/cli/testdata/build-test/build.envd b/e2e/v0/cli/testdata/build-test/build.envd deleted file mode 100644 index f7e0f9976..000000000 --- a/e2e/v0/cli/testdata/build-test/build.envd +++ /dev/null @@ -1,2 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") diff --git a/e2e/v0/cli/testdata/custom-image-test/build.envd b/e2e/v0/cli/testdata/custom-image-test/build.envd deleted file mode 100644 index 100576bc6..000000000 --- a/e2e/v0/cli/testdata/custom-image-test/build.envd +++ /dev/null @@ -1,8 +0,0 @@ -def build(): - base(language="python", image="python:3.11-slim") - install.python_packages( - name=[ - "via", - ] - ) - config.entrypoint(["date", "-u"]) diff --git a/e2e/v0/cli/testdata/quick-start/build.envd b/e2e/v0/cli/testdata/quick-start/build.envd deleted file mode 100644 index 33bee60f7..000000000 --- a/e2e/v0/cli/testdata/quick-start/build.envd +++ /dev/null @@ -1,8 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "numpy", - ] - ) - shell("zsh") diff --git a/e2e/v0/cli/testdata/up-test/build.envd b/e2e/v0/cli/testdata/up-test/build.envd deleted file mode 100644 index 9e49d82cc..000000000 --- a/e2e/v0/cli/testdata/up-test/build.envd +++ /dev/null @@ -1,12 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "via", - ] - ) - install.apt_packages(name=["screenfetch"]) - shell("zsh") - config.pip_index(url="https://pypi.tuna.tsinghua.edu.cn/simple") - # git_config(name="envd", email="envd@envd", editor="vim") - install.vscode_extensions(["ms-python.python"]) diff --git a/e2e/v0/docs/docs_gpu_test.go b/e2e/v0/docs/docs_gpu_test.go deleted file mode 100644 index f9afde377..000000000 --- a/e2e/v0/docs/docs_gpu_test.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package docs - -import ( - . "github.com/onsi/ginkgo/v2" - - "github.com/tensorchord/envd/e2e/v0" -) - -var _ = Describe("check GPU examples in documentation", Ordered, func() { - e := e2e.NewExample(e2e.BuildContextDirWithName("complex"), "e2e-doc") - It("should be able to build the GPU example", e.BuildImage(true)) - AfterAll(e.DestroyContainer()) -}) diff --git a/e2e/v0/docs/docs_test.go b/e2e/v0/docs/docs_test.go deleted file mode 100644 index a87c3d266..000000000 --- a/e2e/v0/docs/docs_test.go +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package docs - -import ( - "fmt" - "net/http" - "time" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v0" - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/home" -) - -var _ = Describe("check examples in documentation", func() { - baseArgs := []string{ - "envd.test", "--debug", - } - - BeforeEach(func() { - Expect(home.Initialize()).NotTo(HaveOccurred()) - e2e.ResetEnvdApp() - envdApp := app.New() - err := envdApp.Run(append(baseArgs, "bootstrap")) - Expect(err).NotTo(HaveOccurred()) - }) - - It("can list envd envs", func() { - envdApp := app.New() - err := envdApp.Run([]string{"envd.test", "--debug", "envs", "list"}) - Expect(err).NotTo(HaveOccurred()) - }) - - It("can check envd envs details", func() { - buildContext := "testdata/minimal" - args := append(baseArgs, []string{ - "up", "--path", buildContext, "--detach", "--force", - }...) - e2e.ResetEnvdApp() - envdApp := app.New() - err := envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - - err = envdApp.Run([]string{"envd.test", "--debug", "envs", "describe", "--env", "minimal"}) - Expect(err).NotTo(HaveOccurred()) - - destroyArgs := append(baseArgs, []string{ - "destroy", "--path", buildContext, - }...) - err = envdApp.Run(destroyArgs) - Expect(err).NotTo(HaveOccurred()) - }) - - upTests := []string{"testdata/minimal", "testdata/getting_started", "testdata/jupyter"} - - for _, v := range upTests { - It(fmt.Sprintf("can up %s environment", v), func() { - args := append(baseArgs, []string{ - "up", "--path", v, "-f", "build.envd", "--detach", "--force", - }...) - e2e.ResetEnvdApp() - envdApp := app.New() - err := envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - - destroyArgs := append(baseArgs, []string{ - "destroy", "--path", v, - }...) - err = envdApp.Run(destroyArgs) - Expect(err).NotTo(HaveOccurred()) - }) - } - - It("should be able to use envdlib", func() { - path := "testdata/envdlib" - args := append(baseArgs, []string{ - "up", "--path", path, "-f", "build.envd", "--detach", "--force", - }...) - e2e.ResetEnvdApp() - envdApp := app.New() - err := envdApp.Run(args) - Expect(err).To(Succeed()) - - // check the port - time.Sleep(time.Second * 2) - resp, err := http.Get("http://127.0.0.1:8888") - Expect(err).To(Succeed()) - defer resp.Body.Close() - Expect(resp.StatusCode).To(Equal(200)) - - destroyArgs := append(baseArgs, []string{ - "destroy", "--path", path, - }...) - err = envdApp.Run(destroyArgs) - Expect(err).To(Succeed()) - }) -}) diff --git a/e2e/v0/docs/suite_test.go b/e2e/v0/docs/suite_test.go deleted file mode 100644 index 7a73ecfd5..000000000 --- a/e2e/v0/docs/suite_test.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package docs - -import ( - "os" - "testing" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/pkg/version" -) - -func init() { - version.SetGitTagForE2ETest(os.Getenv("GIT_LATEST_TAG")) -} - -func TestMain(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "envd cli Suite") -} diff --git a/e2e/v0/docs/testdata/complex/build.envd b/e2e/v0/docs/testdata/complex/build.envd deleted file mode 100644 index 8276ff5d9..000000000 --- a/e2e/v0/docs/testdata/complex/build.envd +++ /dev/null @@ -1,31 +0,0 @@ -def build(): - config.apt_source( - source=""" -deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted -deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted -deb https://mirror.sjtu.edu.cn/ubuntu focal universe -deb https://mirror.sjtu.edu.cn/ubuntu focal-updates universe -deb https://mirror.sjtu.edu.cn/ubuntu focal multiverse -deb https://mirror.sjtu.edu.cn/ubuntu focal-updates multiverse -deb https://mirror.sjtu.edu.cn/ubuntu focal-backports main restricted universe multiverse -deb http://archive.canonical.com/ubuntu focal partner -deb https://mirror.sjtu.edu.cn/ubuntu focal-security main restricted universe multiverse -""" - ) - config.pip_index(url="https://mirror.sjtu.edu.cn/pypi/web/simple") - install.vscode_extensions( - [ - "ms-python.python", - ] - ) - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "numpy", - ] - ) - install.cuda(version="11.2.2", cudnn="8") - shell("zsh") - install.apt_packages(name=["htop"]) - git_config(name="Ce Gao", email="cegao@tensorchord.ai", editor="vim") - run(["ls -la"]) diff --git a/e2e/v0/docs/testdata/envdlib/build.envd b/e2e/v0/docs/testdata/envdlib/build.envd deleted file mode 100644 index 9fde95413..000000000 --- a/e2e/v0/docs/testdata/envdlib/build.envd +++ /dev/null @@ -1,6 +0,0 @@ -envdlib = include("https://github.com/tensorchord/envdlib") - - -def build(): - base(os="ubuntu22.04", language="python") - envdlib.tensorboard(host_port=8888) diff --git a/e2e/v0/docs/testdata/getting_started/build.envd b/e2e/v0/docs/testdata/getting_started/build.envd deleted file mode 100644 index aca0159b3..000000000 --- a/e2e/v0/docs/testdata/getting_started/build.envd +++ /dev/null @@ -1,10 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - # Configure pip index if needed. - # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") - install.python_packages( - name=[ - "numpy", - ] - ) - shell("zsh") diff --git a/e2e/v0/docs/testdata/jupyter/build.envd b/e2e/v0/docs/testdata/jupyter/build.envd deleted file mode 100644 index 64173f743..000000000 --- a/e2e/v0/docs/testdata/jupyter/build.envd +++ /dev/null @@ -1,9 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "numpy", - ] - ) - shell("zsh") - config.jupyter(token="") diff --git a/e2e/v0/docs/testdata/minimal/build.envd b/e2e/v0/docs/testdata/minimal/build.envd deleted file mode 100644 index 5b80aa65a..000000000 --- a/e2e/v0/docs/testdata/minimal/build.envd +++ /dev/null @@ -1,7 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "via", - ] - ) diff --git a/e2e/v0/e2e_helper.go b/e2e/v0/e2e_helper.go deleted file mode 100644 index d8395bcf3..000000000 --- a/e2e/v0/e2e_helper.go +++ /dev/null @@ -1,165 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package e2e - -import ( - "bytes" - "context" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/sirupsen/logrus" - - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/driver/docker" - "github.com/tensorchord/envd/pkg/envd" - ir "github.com/tensorchord/envd/pkg/lang/ir/v0" - "github.com/tensorchord/envd/pkg/types" -) - -func BuildContextDirWithName(name string) string { - return filepath.Join("testdata", name) -} - -func ResetEnvdApp() { - ir.DefaultGraph = ir.NewGraph() -} - -func (e *Example) BuildImage(force bool) func() { - return func() { - logrus.Infof("building %s image in %s", e.Name, e.BuildContextPath) - args := []string{ - "envd.test", "--debug", "build", - "--path", e.BuildContextPath, "--tag", e.Tag, - } - if force { - args = append(args, "--force") - } - ResetEnvdApp() - err := e.app.Run(args) - if err != nil { - panic(err) - } - } -} - -func (e *Example) RemoveImage() func() { - return func() { - ctx := context.TODO() - dockerClient, err := docker.NewClient(ctx) - if err != nil { - panic(err) - } - err = dockerClient.RemoveImage(ctx, e.Tag) - if err != nil { - panic(err) - } - } -} - -func GetEngine(ctx context.Context) envd.Engine { - opt := envd.Options{ - Context: &types.Context{ - Runner: types.RunnerTypeDocker, - }, - } - engine, err := envd.New(ctx, opt) - if err != nil { - panic(err) - } - return engine -} - -type Example struct { - Tag string - BuildContextPath string - // Name is the filepath.Base(BuildContextPath). - Name string - - app *app.EnvdApp -} - -func NewExample(path string, testcaseAbbr string) *Example { - name := filepath.Base(path) - tag := name + ":" + testcaseAbbr - app := app.New() - return &Example{ - Tag: tag, - Name: name, - BuildContextPath: path, - app: &app, - } -} - -func (e *Example) Exec(cmd string) (string, error) { - args := []string{ - "envd.test", "exec", "--name", e.Name, "--raw", cmd, - } - - buffer := new(bytes.Buffer) - e.app.Writer = buffer - - ResetEnvdApp() - err := e.app.Run(args) - if err != nil { - return "", errors.Wrap(err, "failed to start `run` command") - } - return strings.Trim(buffer.String(), "\n"), nil -} - -func (e *Example) ExecRuntimeCommand(cmd string) (string, error) { - buildContext := e.BuildContextPath - args := []string{ - "envd.test", "--debug", "exec", "-p", buildContext, "--command", cmd, - } - - buffer := new(bytes.Buffer) - e.app.Writer = buffer - - ResetEnvdApp() - err := e.app.Run(args) - if err != nil { - return "", errors.Wrap(err, "failed to start `run` command") - } - return strings.Trim(buffer.String(), "\n"), nil -} - -func (e *Example) RunContainer() func() { - return func() { - buildContext := e.BuildContextPath - args := []string{ - "envd.test", "--debug", "up", "--path", buildContext, "--tag", e.Tag, "--detach", "--force", - } - ResetEnvdApp() - err := e.app.Run(args) - if err != nil { - panic(err) - } - } -} - -func (e *Example) DestroyContainer() func() { - return func() { - buildContext := e.BuildContextPath - args := []string{ - "envd.test", "--debug", "destroy", "--path", buildContext, - } - err := e.app.Run(args) - if err != nil { - panic(err) - } - } -} diff --git a/e2e/v0/language/runtime_test.go b/e2e/v0/language/runtime_test.go deleted file mode 100644 index c2170c5ca..000000000 --- a/e2e/v0/language/runtime_test.go +++ /dev/null @@ -1,40 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package language - -import ( - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v0" -) - -var _ = Describe("runtime", Ordered, func() { - exampleName := "runtime" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - BeforeAll(e.BuildImage(true)) - BeforeEach(e.RunContainer()) - It("execute runtime command `numpy`", func() { - res, err := e.ExecRuntimeCommand("numpy") - Expect(err).To(BeNil()) - Expect(res).To(Equal("[2 3 4]")) - }) - It("execute runtime command `root`", func() { - _, err := e.ExecRuntimeCommand("root") - Expect(err).To(BeNil()) - }) - AfterEach(e.DestroyContainer()) -}) diff --git a/e2e/v0/language/testdata/python/conda/build.envd b/e2e/v0/language/testdata/python/conda/build.envd deleted file mode 100644 index fda006c00..000000000 --- a/e2e/v0/language/testdata/python/conda/build.envd +++ /dev/null @@ -1,3 +0,0 @@ -def build(): - install.conda_packages(env_file="env.yaml") - base(os="ubuntu22.04", language="python3.8") diff --git a/e2e/v0/language/testdata/python/conda_channel/build.envd b/e2e/v0/language/testdata/python/conda_channel/build.envd deleted file mode 100644 index afb187906..000000000 --- a/e2e/v0/language/testdata/python/conda_channel/build.envd +++ /dev/null @@ -1,10 +0,0 @@ -def build(): - config.conda_channel( - channel=""" -channels: - - defaults - - dglteam # dgllife in env.yaml only works if specify channels here - """ - ) - install.conda_packages(env_file="env.yaml") - base(os="ubuntu22.04", language="python3.8") diff --git a/e2e/v0/language/testdata/python/hybrid/build.envd b/e2e/v0/language/testdata/python/hybrid/build.envd deleted file mode 100644 index 5ed9ab562..000000000 --- a/e2e/v0/language/testdata/python/hybrid/build.envd +++ /dev/null @@ -1,2 +0,0 @@ -def build(): - install.python_packages(name=["via"], requirements="requirements.txt") diff --git a/e2e/v0/language/testdata/python/packages/build.envd b/e2e/v0/language/testdata/python/packages/build.envd deleted file mode 100644 index 3bb7a8e06..000000000 --- a/e2e/v0/language/testdata/python/packages/build.envd +++ /dev/null @@ -1,2 +0,0 @@ -def build(): - install.python_packages(name=["via"]) diff --git a/e2e/v0/language/testdata/python/requirements/build.envd b/e2e/v0/language/testdata/python/requirements/build.envd deleted file mode 100644 index 1a8b7799e..000000000 --- a/e2e/v0/language/testdata/python/requirements/build.envd +++ /dev/null @@ -1,2 +0,0 @@ -def build(): - install.python_packages(requirements="./requirements.txt") diff --git a/e2e/v0/language/testdata/run/build.envd b/e2e/v0/language/testdata/run/build.envd deleted file mode 100644 index 3c642f50c..000000000 --- a/e2e/v0/language/testdata/run/build.envd +++ /dev/null @@ -1,11 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - shell("zsh") - run( - commands=[ - "mkdir test", - "cd test", - "ls", - "pwd", - ] - ) diff --git a/e2e/v0/language/testdata/runtime/build.envd b/e2e/v0/language/testdata/runtime/build.envd deleted file mode 100644 index 869559546..000000000 --- a/e2e/v0/language/testdata/runtime/build.envd +++ /dev/null @@ -1,14 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "numpy", - ] - ) - shell("zsh") - runtime.command( - commands={ - "numpy": "python demo.py", - "root": "sudo ls /root", - } - ) diff --git a/e2e/v1/cli/build_test.go b/e2e/v1/cli/build_test.go deleted file mode 100644 index 8f0d450b6..000000000 --- a/e2e/v1/cli/build_test.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - "context" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v1" - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/driver/docker" - "github.com/tensorchord/envd/pkg/envd" - "github.com/tensorchord/envd/pkg/home" - "github.com/tensorchord/envd/pkg/types" -) - -var _ = Describe("build command", Ordered, func() { - buildTestName := "testdata/build-test" - customImageTestName := "testdata/custom-image-test" - When("given the right arguments", func() { - It("should build successfully", func() { - envdApp := app.New() - e2e.ResetEnvdApp() - err := envdApp.Run([]string{"envd.test", "--debug", "bootstrap"}) - Expect(err).NotTo(HaveOccurred()) - _, err = docker.NewClient(context.TODO()) - Expect(err).NotTo(HaveOccurred()) - c := types.Context{Runner: types.RunnerTypeDocker} - opt := envd.Options{Context: &c} - envdEngine, err := envd.New(context.TODO(), opt) - Expect(err).NotTo(HaveOccurred()) - _, err = envdEngine.Destroy(context.TODO(), buildTestName) - Expect(err).NotTo(HaveOccurred()) - envdApp = app.New() - args := []string{ - "envd.test", "--debug", "build", "--path", buildTestName, - } - err = envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - }) - }) - When("given the custom image", func() { - It("should build successfully", func() { - envdApp := app.New() - e2e.ResetEnvdApp() - err := envdApp.Run([]string{"envd.test", "--debug", "bootstrap"}) - Expect(err).NotTo(HaveOccurred()) - _, err = docker.NewClient(context.TODO()) - Expect(err).NotTo(HaveOccurred()) - c := types.Context{Runner: types.RunnerTypeDocker} - opt := envd.Options{Context: &c} - envdEngine, err := envd.New(context.TODO(), opt) - Expect(err).NotTo(HaveOccurred()) - _, err = envdEngine.Destroy(context.TODO(), buildTestName) - Expect(err).NotTo(HaveOccurred()) - envdApp = app.New() - args := []string{ - "envd.test", "--debug", "build", "--path", customImageTestName, - } - err = envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - }) - }) - AfterAll(func() { - Expect(home.Initialize()).NotTo(HaveOccurred()) - envdApp := app.New() - e2e.ResetEnvdApp() - err := envdApp.Run([]string{"envd.test", "--debug", "bootstrap"}) - Expect(err).NotTo(HaveOccurred()) - _, err = docker.NewClient(context.TODO()) - Expect(err).NotTo(HaveOccurred()) - c := types.Context{Runner: types.RunnerTypeDocker} - opt := envd.Options{Context: &c} - envdEngine, err := envd.New(context.TODO(), opt) - Expect(err).NotTo(HaveOccurred()) - _, err = envdEngine.Destroy(context.TODO(), buildTestName) - Expect(err).NotTo(HaveOccurred()) - // Init DefaultGraph. - // ir.DefaultGraph = ir.NewGraph() - }) -}) diff --git a/e2e/v1/cli/bytecode_hash_test.go b/e2e/v1/cli/bytecode_hash_test.go deleted file mode 100644 index 9b9082fa1..000000000 --- a/e2e/v1/cli/bytecode_hash_test.go +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - "context" - "os" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v1" -) - -func appendSomeToFile(path string) { - f, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) - if err != nil { - panic(err) - } - blank := "\n\n" - _, err = f.Write([]byte(blank)) - if err != nil { - panic(err) - } - if err := f.Close(); err != nil { - panic(err) - } -} - -var _ = Describe("bytecode hash cache target", func() { - exampleName := "quick-start" - It("add some blank to build.envd", func() { - testcase := "add-blank" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - ctx := context.TODO() - e.BuildImage(false)() - engine := e2e.GetEngine(ctx) - imageSum, err := engine.GetImage(ctx, e.Tag) - Expect(err).NotTo(HaveOccurred()) - oldCreated := imageSum.Created - appendSomeToFile("testdata/" + exampleName + "/build.envd") - e.BuildImage(false)() - imageSum, err = engine.GetImage(ctx, e.Tag) - Expect(err).NotTo(HaveOccurred()) - newCreated := imageSum.Created - Expect(oldCreated).To(Equal(newCreated)) - e.RemoveImage()() - }) -}) diff --git a/e2e/v1/cli/suite_test.go b/e2e/v1/cli/suite_test.go deleted file mode 100644 index 396f13ed5..000000000 --- a/e2e/v1/cli/suite_test.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - "os" - "testing" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/pkg/version" -) - -func init() { - version.SetGitTagForE2ETest(os.Getenv("GIT_LATEST_TAG")) -} - -func TestMain(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "envd cli Suite") -} diff --git a/e2e/v1/cli/testdata/quick-start/demo.py b/e2e/v1/cli/testdata/quick-start/demo.py deleted file mode 100644 index 5a04cb44e..000000000 --- a/e2e/v1/cli/testdata/quick-start/demo.py +++ /dev/null @@ -1,5 +0,0 @@ -import numpy as np - -a = np.array([2, 3, 4]) - -print(a) diff --git a/e2e/v1/cli/up_test.go b/e2e/v1/cli/up_test.go deleted file mode 100644 index 6bafa7e9d..000000000 --- a/e2e/v1/cli/up_test.go +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package cli - -import ( - "context" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/e2e/v1" - "github.com/tensorchord/envd/pkg/app" - "github.com/tensorchord/envd/pkg/driver/docker" - "github.com/tensorchord/envd/pkg/envd" - "github.com/tensorchord/envd/pkg/home" - "github.com/tensorchord/envd/pkg/types" -) - -var _ = Describe("up command", Ordered, func() { - buildContext := "testdata/up-test" - env := "up-test" - baseArgs := []string{ - "envd.test", "--debug", - } - BeforeAll(func() { - Expect(home.Initialize()).NotTo(HaveOccurred()) - envdApp := app.New() - err := envdApp.Run(append(baseArgs, "bootstrap")) - Expect(err).NotTo(HaveOccurred()) - _, err = docker.NewClient(context.TODO()) - Expect(err).NotTo(HaveOccurred()) - c := types.Context{Runner: types.RunnerTypeDocker} - opt := envd.Options{Context: &c} - envdEngine, err := envd.New(context.TODO(), opt) - Expect(err).NotTo(HaveOccurred()) - _, err = envdEngine.Destroy(context.TODO(), env) - Expect(err).NotTo(HaveOccurred()) - - }) - When("given the right arguments", func() { - It("should up and destroy successfully", func() { - args := append(baseArgs, []string{ - "up", "--path", buildContext, "--detach", "--force", - }...) - e2e.ResetEnvdApp() - envdApp := app.New() - err := envdApp.Run(args) - Expect(err).NotTo(HaveOccurred()) - - depsArgs := append(baseArgs, []string{ - "envs", "describe", "--env", env, - }...) - - err = envdApp.Run(depsArgs) - Expect(err).NotTo(HaveOccurred()) - - destroyArgs := append(baseArgs, []string{ - "destroy", "--path", buildContext, - }...) - err = envdApp.Run(destroyArgs) - Expect(err).NotTo(HaveOccurred()) - }) - }) -}) diff --git a/e2e/v1/language/python_test.go b/e2e/v1/language/python_test.go deleted file mode 100644 index b8871c87e..000000000 --- a/e2e/v1/language/python_test.go +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package language - -import ( - . "github.com/onsi/ginkgo/v2" - - "github.com/tensorchord/envd/e2e/v1" -) - -var _ = Describe("python", Ordered, func() { - It("Should build packages successfully", func() { - exampleName := "python/packages" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - e.BuildImage(true)() - e.RunContainer()() - e.DestroyContainer()() - }) - It("Should build requirements successfully", func() { - exampleName := "python/requirements" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - e.BuildImage(true)() - e.RunContainer()() - e.DestroyContainer()() - }) - It("Should build hybrid successfully", func() { - exampleName := "python/hybrid" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - e.BuildImage(true)() - e.RunContainer()() - e.DestroyContainer()() - }) - - It("Should build conda with channel successfully", func() { - exampleName := "python/conda" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - e.BuildImage(true)() - e.RunContainer()() - e.DestroyContainer()() - }) - - It("Should build conda with separate channel setting successfully", func() { - exampleName := "python/conda_channel" - testcase := "e2e" - e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) - e.BuildImage(true)() - e.RunContainer()() - e.DestroyContainer()() - }) -}) diff --git a/e2e/v1/language/suite_test.go b/e2e/v1/language/suite_test.go deleted file mode 100644 index 5fdc07a3b..000000000 --- a/e2e/v1/language/suite_test.go +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package language - -import ( - "os" - "testing" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - - "github.com/tensorchord/envd/pkg/version" -) - -func init() { - version.SetGitTagForE2ETest(os.Getenv("GIT_LATEST_TAG")) -} - -func TestMain(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "envd language Suite") -} diff --git a/e2e/v1/language/testdata/python/conda/env.yaml b/e2e/v1/language/testdata/python/conda/env.yaml deleted file mode 100644 index 329719e5e..000000000 --- a/e2e/v1/language/testdata/python/conda/env.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: imarobot # should ignore this name -channels: - - conda-forge - - defaults -dependencies: - - babel - - pip: - - via - - -e . \ No newline at end of file diff --git a/e2e/v1/language/testdata/python/conda/setup.py b/e2e/v1/language/testdata/python/conda/setup.py deleted file mode 100644 index d69175316..000000000 --- a/e2e/v1/language/testdata/python/conda/setup.py +++ /dev/null @@ -1,11 +0,0 @@ -from setuptools import find_packages, setup - -setup( - name="envd_e2e_conda_test", - version="1.0.0", - url="https://github.com/mypackage.git", - author="Author Name", - author_email="author@gmail.com", - description="Description of my package", - packages=find_packages(), -) diff --git a/e2e/v1/language/testdata/python/conda_channel/env.yaml b/e2e/v1/language/testdata/python/conda_channel/env.yaml deleted file mode 100644 index 849610dea..000000000 --- a/e2e/v1/language/testdata/python/conda_channel/env.yaml +++ /dev/null @@ -1,3 +0,0 @@ -name: imarobot # should ignore this name -dependencies: - - dgl \ No newline at end of file diff --git a/e2e/v1/language/testdata/python/hybrid/requirements.txt b/e2e/v1/language/testdata/python/hybrid/requirements.txt deleted file mode 100644 index 682070c44..000000000 --- a/e2e/v1/language/testdata/python/hybrid/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -via diff --git a/e2e/v1/language/testdata/python/requirements/requirements.txt b/e2e/v1/language/testdata/python/requirements/requirements.txt deleted file mode 100644 index ca015edcd..000000000 --- a/e2e/v1/language/testdata/python/requirements/requirements.txt +++ /dev/null @@ -1,2 +0,0 @@ -via --e . \ No newline at end of file diff --git a/e2e/v1/language/testdata/python/requirements/setup.py b/e2e/v1/language/testdata/python/requirements/setup.py deleted file mode 100644 index d69175316..000000000 --- a/e2e/v1/language/testdata/python/requirements/setup.py +++ /dev/null @@ -1,11 +0,0 @@ -from setuptools import find_packages, setup - -setup( - name="envd_e2e_conda_test", - version="1.0.0", - url="https://github.com/mypackage.git", - author="Author Name", - author_email="author@gmail.com", - description="Description of my package", - packages=find_packages(), -) diff --git a/e2e/v1/language/testdata/runtime/demo.py b/e2e/v1/language/testdata/runtime/demo.py deleted file mode 100644 index 5a04cb44e..000000000 --- a/e2e/v1/language/testdata/runtime/demo.py +++ /dev/null @@ -1,5 +0,0 @@ -import numpy as np - -a = np.array([2, 3, 4]) - -print(a) diff --git a/pkg/app/interactive.go b/pkg/app/interactive.go index 63283048d..93a5e27cd 100644 --- a/pkg/app/interactive.go +++ b/pkg/app/interactive.go @@ -67,11 +67,11 @@ type input struct { var LanguageChoice = input{ prompt: "Choose a programming language", - inputType: SINGLE_SELECT, + inputType: MULTIPLE_SELECT, label: LabelLanguage, options: []string{ "python", - "r", + "r_lang", "julia", }, } @@ -81,8 +81,10 @@ var PythonPackageChoice = input{ inputType: MULTIPLE_SELECT, label: LabelPythonPackage, options: []string{ + "ipython", "numpy", - "tensorflow", + "pandas", + "torch", }, } @@ -111,9 +113,9 @@ var CudaVersionChoice = input{ inputType: SINGLE_SELECT, label: LabelCuda, options: []string{ - "11.6.2", - "11.3.1", "11.2.2", + "11.8.0", + "12.3.2", }, } @@ -145,7 +147,6 @@ func (m model) View() string { case INPUT: // TODO: implement input if needed - } s += "\nPress q to quit. " @@ -225,7 +226,15 @@ func startQuestion(input input) { func generateFile(clicontext *cli.Context) error { var buf bytes.Buffer buf.WriteString("def build():\n") - buf.WriteString(fmt.Sprintf("%sbase(os=\"ubuntu22.04\", language=\"%s\")\n", indentation, selectionMap[LabelLanguage][0])) + buf.WriteString(fmt.Sprintf("%sbase(image=\"ubuntu:22.04\", dev=True)\n", indentation)) + for _, lang := range selectionMap[LabelLanguage] { + if lang == "python" { + buf.WriteString(fmt.Sprintf("%sinstall.conda()\n", indentation)) + buf.WriteString(fmt.Sprintf("%sinstall.python()\n", indentation)) + } else { + buf.WriteString(fmt.Sprintf("%sinstall.%s()\n", indentation, lang)) + } + } buf.WriteString(generatePackagesStr("python", selectionMap[LabelPythonPackage])) buf.WriteString(generatePackagesStr("r", selectionMap[LabelRPackage])) if len(selectionMap[LabelPythonRequirement]) > 0 { @@ -259,11 +268,8 @@ func generatePackagesStr(name string, packages []string) string { return "" } s := fmt.Sprintf("%sinstall.%s_packages(name = [\n", indentation, name) - for i, p := range packages { - s += fmt.Sprintf("%s\"%s\"", strings.Repeat(indentation, 2), p) - if i != len(packages)-1 { - s += ", " - } + for _, p := range packages { + s += fmt.Sprintf("%s\"%s\",", strings.Repeat(indentation, 2), p) s += "\n" } s += fmt.Sprintf("%s])\n", indentation) diff --git a/pkg/builder/builder_test.go b/pkg/builder/builder_test.go index 40dc1f707..a9e111bb8 100644 --- a/pkg/builder/builder_test.go +++ b/pkg/builder/builder_test.go @@ -28,7 +28,7 @@ import ( mockbuildkitd "github.com/tensorchord/envd/pkg/buildkitd/mock" "github.com/tensorchord/envd/pkg/home" mockstarlark "github.com/tensorchord/envd/pkg/lang/frontend/starlark/mock" - v0 "github.com/tensorchord/envd/pkg/lang/ir/v0" + v1 "github.com/tensorchord/envd/pkg/lang/ir/v1" "github.com/tensorchord/envd/pkg/progress/compileui" compileuimock "github.com/tensorchord/envd/pkg/progress/compileui/mock" progressmode "github.com/tensorchord/envd/pkg/progress/mode" @@ -71,7 +71,7 @@ var _ = Describe("Builder", func() { ctrlWriter := gomock.NewController(GinkgoT()) w = compileuimock.NewMockWriter(ctrlWriter) - v0.DefaultGraph.SetWriter(w) + v1.DefaultGraph.SetWriter(w) }) When("build error", func() { diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index 9b2a7fa81..dcf377680 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -198,7 +198,7 @@ func (e dockerEngine) getVerFromImageLabel(ctx context.Context, env string) (ver } ver, ok := ctr.Labels[types.ImageLabelSyntaxVer] if !ok { - return version.NewByVersion("v0"), nil + return version.NewByVersion("v1"), nil } return version.NewByVersion(ver), nil } diff --git a/pkg/lang/frontend/starlark/v0/builtin/builtin.go b/pkg/lang/frontend/starlark/v0/builtin/builtin.go deleted file mode 100644 index 1b46b99cb..000000000 --- a/pkg/lang/frontend/starlark/v0/builtin/builtin.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package builtin - -const ( - // BuildContextDir is the name of the directory that contains the build context. - BuildContextDir = "_build_context_dir" -) diff --git a/pkg/lang/frontend/starlark/v0/config/config.go b/pkg/lang/frontend/starlark/v0/config/config.go deleted file mode 100644 index 69f7af304..000000000 --- a/pkg/lang/frontend/starlark/v0/config/config.go +++ /dev/null @@ -1,248 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package config - -import ( - "github.com/cockroachdb/errors" - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - "go.starlark.net/starlarkstruct" - - ir "github.com/tensorchord/envd/pkg/lang/ir/v0" - "github.com/tensorchord/envd/pkg/util/starlarkutil" -) - -var ( - logger = logrus.WithField("frontend", "starlark") -) - -var Module = &starlarkstruct.Module{ - Name: "config", - Members: starlark.StringDict{ - "apt_source": starlark.NewBuiltin(ruleUbuntuAptSource, ruleFuncUbuntuAptSource), - "gpu": starlark.NewBuiltin(ruleGPU, ruleFuncGPU), - "jupyter": starlark.NewBuiltin(ruleJupyter, ruleFuncJupyter), - "cran_mirror": starlark.NewBuiltin( - ruleCRANMirror, ruleFuncCRANMirror), - "pip_index": starlark.NewBuiltin( - rulePyPIIndex, ruleFuncPyPIIndex), - "conda_channel": starlark.NewBuiltin( - ruleCondaChannel, ruleFuncCondaChannel), - "julia_pkg_server": starlark.NewBuiltin( - ruleJuliaPackageServer, ruleFuncJuliaPackageServer), - "rstudio_server": starlark.NewBuiltin(ruleRStudioServer, ruleFuncRStudioServer), - "entrypoint": starlark.NewBuiltin(ruleEntrypoint, ruleFuncEntrypoint), - "repo": starlark.NewBuiltin(ruleRepo, ruleFuncRepo), - "shm_size": starlark.NewBuiltin(ruleShmSize, ruleFuncShmSize), - }, -} - -func ruleFuncShmSize(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var shmSize starlark.Int - - if err := starlark.UnpackArgs(ruleShmSize, args, kwargs, "size", &shmSize); err != nil { - return nil, err - } - - shmSizeInt, ok := shmSize.Int64() - if ok { - ir.ShmSize(int(shmSizeInt)) - logger.Debugf("Using %d shm size", int(shmSizeInt)) - } else { - logger.Debugf("Failed to convert shm size to int64") - } - - return starlark.None, nil -} - -func ruleFuncGPU(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var numGPUs starlark.Int - - if err := starlark.UnpackArgs(ruleGPU, args, kwargs, - "count?", &numGPUs); err != nil { - return nil, err - } - - numGPUsInt, ok := numGPUs.Int64() - if ok { - ir.GPU(int(numGPUsInt)) - logger.Debugf("Using %d GPUs", int(numGPUsInt)) - } else { - logger.Debugf("Failed to convert gpu count to int64") - } - return starlark.None, nil -} - -func ruleFuncJupyter(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var token starlark.String - var port starlark.Int - - if err := starlark.UnpackArgs(ruleJupyter, args, kwargs, - "token?", &token, "port?", &port); err != nil { - return nil, err - } - - pwdStr := token.GoString() - - portInt, ok := port.Int64() - if !ok { - return nil, errors.New("port must be an integer") - } - logger.Debugf("rule `%s` is invoked, password=%s, port=%d", - ruleJupyter, pwdStr, portInt) - if err := ir.Jupyter(pwdStr, portInt); err != nil { - return nil, err - } - - return starlark.None, nil -} - -func ruleFuncPyPIIndex(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var url, extraURL starlark.String - var trust bool - - if err := starlark.UnpackArgs(rulePyPIIndex, args, kwargs, - "url?", &url, "extra_url?", &extraURL, "trust?", &trust); err != nil { - return nil, err - } - - indexStr := url.GoString() - extraIndexStr := extraURL.GoString() - - logger.Debugf("rule `%s` is invoked, index=%s, extraIndex=%s, trust=%t", - rulePyPIIndex, indexStr, extraIndexStr, trust) - if err := ir.PyPIIndex(indexStr, extraIndexStr, trust); err != nil { - return nil, err - } - - return starlark.None, nil -} - -func ruleFuncCRANMirror(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var url starlark.String - - if err := starlark.UnpackArgs(ruleCRANMirror, args, kwargs, - "url?", &url); err != nil { - return nil, err - } - - urlStr := url.GoString() - - logger.Debugf("rule `%s` is invoked, url=%s", ruleCRANMirror, urlStr) - if err := ir.CRANMirror(urlStr); err != nil { - return nil, err - } - return starlark.None, nil -} - -func ruleFuncJuliaPackageServer(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var url starlark.String - - if err := starlark.UnpackArgs(ruleJuliaPackageServer, args, kwargs, - "url?", &url); err != nil { - return nil, err - } - - urlStr := url.GoString() - - logger.Debugf("rule `%s` is invoked, url=%s", ruleJuliaPackageServer, urlStr) - if err := ir.JuliaPackageServer(urlStr); err != nil { - return nil, err - } - return starlark.None, nil -} - -func ruleFuncUbuntuAptSource(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var source starlark.String - - if err := starlark.UnpackArgs(ruleUbuntuAptSource, args, kwargs, - "source?", &source); err != nil { - return nil, err - } - - sourceStr := source.GoString() - - logger.Debugf("rule `%s` is invoked, source=%s", ruleUbuntuAptSource, sourceStr) - if err := ir.UbuntuAPT(sourceStr); err != nil { - return nil, err - } - - return starlark.None, nil -} - -func ruleFuncRStudioServer(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - if err := ir.RStudioServer(); err != nil { - return nil, err - } - - return starlark.None, nil -} - -func ruleFuncCondaChannel(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var channel string - var useMamba bool - - if err := starlark.UnpackArgs(ruleCondaChannel, args, kwargs, - "channel?", &channel, "use_mamba?", &useMamba); err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, channel=%s, use_mamba=%t\n", - ruleCondaChannel, channel, useMamba) - if err := ir.CondaChannel(channel, useMamba); err != nil { - return nil, err - } - - return starlark.None, nil -} - -func ruleFuncEntrypoint(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var argv *starlark.List - - if err := starlark.UnpackArgs(ruleEntrypoint, args, kwargs, "args", &argv); err != nil { - return nil, err - } - - argList, err := starlarkutil.ToStringSlice(argv) - if err != nil { - return nil, err - } - - logger.Debugf("user defined entrypoints: {%s}\n", argList) - ir.Entrypoint(argList) - return starlark.None, nil -} - -func ruleFuncRepo(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var url, description string - - if err := starlark.UnpackArgs(ruleRepo, args, kwargs, "url", &url, "description?", &description); err != nil { - return nil, err - } - - logger.Debugf("repo info: url=%s, description=%s", url, description) - ir.Repo(url, description) - return starlark.None, nil -} diff --git a/pkg/lang/frontend/starlark/v0/config/const.go b/pkg/lang/frontend/starlark/v0/config/const.go deleted file mode 100644 index 71a41b2b9..000000000 --- a/pkg/lang/frontend/starlark/v0/config/const.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package config - -const ( - ruleUbuntuAptSource = "config.apt_source" - rulePyPIIndex = "config.pip_index" - ruleCRANMirror = "config.cran_mirror" - ruleJupyter = "config.jupyter" - ruleCondaChannel = "config.conda_channel" - ruleGPU = "config.gpu" - ruleJuliaPackageServer = "config.julia_pkg_server" - ruleRStudioServer = "config.rstudio_server" - ruleEntrypoint = "config.entrypoint" - ruleRepo = "config.repo" - ruleShmSize = "config.shm_size" -) diff --git a/pkg/lang/frontend/starlark/v0/data/const.go b/pkg/lang/frontend/starlark/v0/data/const.go deleted file mode 100644 index 6b6e6441d..000000000 --- a/pkg/lang/frontend/starlark/v0/data/const.go +++ /dev/null @@ -1,21 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package data - -const ( - ruleEnvdManagedDataSource = "data.envd" - huggingFaceDatasetPath = "~/.cache/huggingface" - dglFaceDatasetPath = "~/.dgl" -) diff --git a/pkg/lang/frontend/starlark/v0/data/rule.go b/pkg/lang/frontend/starlark/v0/data/rule.go deleted file mode 100644 index cd69b61bf..000000000 --- a/pkg/lang/frontend/starlark/v0/data/rule.go +++ /dev/null @@ -1,54 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package data - -import ( - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - "go.starlark.net/starlarkstruct" - - envddata "github.com/tensorchord/envd/pkg/data" -) - -var ( - logger = logrus.WithField("frontend", "starlark") -) - -var Module = &starlarkstruct.Module{ - Name: "data", - Members: starlark.StringDict{ - "envd": starlark.NewBuiltin(ruleEnvdManagedDataSource, ruleValueEnvdManagedDataSource), - "path": &starlarkstruct.Module{ - Name: "path", - Members: starlark.StringDict{ - "huggingface": starlark.String(huggingFaceDatasetPath), - "dgl": starlark.String(dglFaceDatasetPath), - }}, - }, -} - -func ruleValueEnvdManagedDataSource(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name starlark.String - - if err := starlark.UnpackArgs(ruleEnvdManagedDataSource, args, kwargs, - "name?", &name); err != nil { - return nil, err - } - logger.Debugf("rule `%s` is invoked, name=%s", - ruleEnvdManagedDataSource, name) - - return NewDataSourceValue(envddata.NewEnvdManagedDataSource(name.GoString())), nil -} diff --git a/pkg/lang/frontend/starlark/v0/data/util.go b/pkg/lang/frontend/starlark/v0/data/util.go deleted file mode 100644 index 89d84f812..000000000 --- a/pkg/lang/frontend/starlark/v0/data/util.go +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package data - -import ( - "go.starlark.net/starlark" - - envddata "github.com/tensorchord/envd/pkg/data" -) - -type DataSourceValue struct { - source envddata.DataSource -} - -func (d DataSourceValue) Init() error { - return d.source.Init() -} - -func (d DataSourceValue) GetHostDir() (string, error) { - return d.source.GetHostDir() -} - -func (d DataSourceValue) String() string { - return d.source.Type() -} - -func (d DataSourceValue) Type() string { - return d.source.Type() -} - -func (d DataSourceValue) Freeze() {} - -func (d DataSourceValue) Truth() starlark.Bool { return true } - -func (d DataSourceValue) Hash() (uint32, error) { - return d.source.Hash() -} - -func NewDataSourceValue(source envddata.DataSource) *DataSourceValue { - return &DataSourceValue{source: source} -} diff --git a/pkg/lang/frontend/starlark/v0/install/const.go b/pkg/lang/frontend/starlark/v0/install/const.go deleted file mode 100644 index d8485da17..000000000 --- a/pkg/lang/frontend/starlark/v0/install/const.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package install - -const ( - ruleSystemPackage = "install.apt_packages" - rulePyPIPackage = "install.python_packages" - ruleRPackage = "install.r_packages" - ruleCUDA = "install.cuda" - ruleVSCode = "install.vscode_extensions" - ruleConda = "install.conda_packages" - ruleJulia = "install.julia_packages" -) diff --git a/pkg/lang/frontend/starlark/v0/install/install.go b/pkg/lang/frontend/starlark/v0/install/install.go deleted file mode 100644 index 6e888d86a..000000000 --- a/pkg/lang/frontend/starlark/v0/install/install.go +++ /dev/null @@ -1,204 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package install - -import ( - "github.com/cockroachdb/errors" - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - "go.starlark.net/starlarkstruct" - - ir "github.com/tensorchord/envd/pkg/lang/ir/v0" - "github.com/tensorchord/envd/pkg/util/starlarkutil" -) - -var ( - logger = logrus.WithField("frontend", "starlark") -) - -var Module = &starlarkstruct.Module{ - Name: "install", - Members: starlark.StringDict{ - "python_packages": starlark.NewBuiltin(rulePyPIPackage, ruleFuncPyPIPackage), - "r_packages": starlark.NewBuiltin(ruleRPackage, ruleFuncRPackage), - "apt_packages": starlark.NewBuiltin(ruleSystemPackage, ruleFuncSystemPackage), - "cuda": starlark.NewBuiltin(ruleCUDA, ruleFuncCUDA), - "vscode_extensions": starlark.NewBuiltin(ruleVSCode, ruleFuncVSCode), - "conda_packages": starlark.NewBuiltin(ruleConda, ruleFuncConda), - "julia_packages": starlark.NewBuiltin(ruleJulia, ruleFuncJulia), - }, -} - -func ruleFuncPyPIPackage(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name *starlark.List - var requirementsFile starlark.String - var wheels *starlark.List - - if err := starlark.UnpackArgs(rulePyPIPackage, args, kwargs, - "name?", &name, "requirements?", &requirementsFile, "local_wheels?", &wheels); err != nil { - return nil, err - } - - nameList, err := starlarkutil.ToStringSlice(name) - if err != nil { - return nil, err - } - - requirementsFileStr := requirementsFile.GoString() - - localWheels, err := starlarkutil.ToStringSlice(wheels) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, name=%v, requirements=%s, local_wheels=%s", - rulePyPIPackage, nameList, requirementsFileStr, localWheels) - - err = ir.PyPIPackage(nameList, requirementsFileStr, localWheels) - return starlark.None, err -} - -func ruleFuncRPackage(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name *starlark.List - - if err := starlark.UnpackArgs(ruleRPackage, - args, kwargs, "name", &name); err != nil { - return nil, err - } - - nameList, err := starlarkutil.ToStringSlice(name) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, name=%v", ruleRPackage, nameList) - ir.RPackage(nameList) - - return starlark.None, nil -} - -func ruleFuncJulia(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name *starlark.List - - if err := starlark.UnpackArgs(ruleJulia, - args, kwargs, "name", &name); err != nil { - return nil, err - } - - nameList, err := starlarkutil.ToStringSlice(name) - if err != nil { - return nil, err - } - logger.Debugf("rule `%s` is invoked, name=%v", ruleJulia, nameList) - ir.JuliaPackage(nameList) - - return starlark.None, nil -} - -func ruleFuncSystemPackage(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name *starlark.List - - if err := starlark.UnpackArgs(ruleSystemPackage, - args, kwargs, "name?", &name); err != nil { - return nil, err - } - - nameList, err := starlarkutil.ToStringSlice(name) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, name=%v", ruleSystemPackage, nameList) - ir.SystemPackage(nameList) - - return starlark.None, nil -} - -func ruleFuncCUDA(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var version, cudnn string - - if err := starlark.UnpackArgs(ruleCUDA, args, kwargs, - "version", &version, "cudnn?", &cudnn); err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, version=%s, cudnn=%s", - ruleCUDA, version, cudnn) - ir.CUDA(version, cudnn) - - return starlark.None, nil -} - -func ruleFuncVSCode(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var plugins *starlark.List - - if err := starlark.UnpackArgs(ruleVSCode, - args, kwargs, "name", &plugins); err != nil { - return nil, err - } - - pluginList, err := starlarkutil.ToStringSlice(plugins) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, plugins=%v", ruleVSCode, pluginList) - if err := ir.VSCodePlugins(pluginList); err != nil { - return starlark.None, err - } - - return starlark.None, nil -} - -func ruleFuncConda(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name, channel *starlark.List - var envFile starlark.String - - if err := starlark.UnpackArgs(ruleConda, - args, kwargs, "name?", &name, "channel?", &channel, "env_file?", &envFile); err != nil { - return nil, err - } - - nameList, err := starlarkutil.ToStringSlice(name) - if err != nil { - return nil, err - } - - channelList, err := starlarkutil.ToStringSlice(channel) - if err != nil { - return nil, err - } - - envFileStr := envFile.GoString() - if envFileStr != "" { - if (len(nameList) != 0) || (len(channelList) != 0) { - return nil, errors.New("env_file and name/channel are mutually exclusive") - } - } - - logger.Debugf("rule `%s` is invoked, name=%v, channel=%v, env_file=%s", ruleConda, nameList, channelList, envFileStr) - if err := ir.CondaPackage(nameList, channelList, envFileStr); err != nil { - return starlark.None, err - } - - return starlark.None, nil -} diff --git a/pkg/lang/frontend/starlark/v0/interpreter.go b/pkg/lang/frontend/starlark/v0/interpreter.go deleted file mode 100644 index fdbacb1b7..000000000 --- a/pkg/lang/frontend/starlark/v0/interpreter.go +++ /dev/null @@ -1,209 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "bytes" - "hash/fnv" - "io/fs" - "os" - "path/filepath" - "strconv" - "strings" - - "github.com/cockroachdb/errors" - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - - interp "github.com/tensorchord/envd/pkg/lang/frontend/starlark" - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/config" - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/data" - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/install" - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/io" - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/runtime" - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/universe" - "github.com/tensorchord/envd/pkg/util/fileutil" -) - -type entry struct { - globals starlark.StringDict - err error -} - -// generalInterpreter is the interpreter implementation for Starlark. -// Please refer to https://github.com/google/starlark-go -type generalInterpreter struct { - predeclared starlark.StringDict - buildContextDir string - cache map[string]*entry -} - -func NewInterpreter(buildContextDir string) interp.Interpreter { - // Register envd rules and built-in variables to Starlark. - universe.RegisterEnvdRules() - universe.RegisterBuildContext(buildContextDir) - - return &generalInterpreter{ - predeclared: starlark.StringDict{ - "install": install.Module, - "config": config.Module, - "io": io.Module, - "runtime": runtime.Module, - "data": data.Module, - }, - buildContextDir: buildContextDir, - cache: make(map[string]*entry), - } -} - -func (s *generalInterpreter) NewThread(module string) *starlark.Thread { - thread := &starlark.Thread{ - Name: module, - Load: s.load, - } - return thread -} - -func (s *generalInterpreter) load(thread *starlark.Thread, module string) (starlark.StringDict, error) { - return s.exec(thread, module) -} - -func (s *generalInterpreter) exec(thread *starlark.Thread, module string) (starlark.StringDict, error) { - // There are two cases: - // 1. module exists - // 2. there's an explicit `nil` placeholder for module in s.cache - // 3. module does not exist in s.cache - e, ok := s.cache[module] - - // Case 1. - if e != nil { - return e.globals, e.err - } - - // Case 2. - // There is an explicit `nil` for module, which means we are in the middle of exec module. - if ok { - return nil, errors.Newf("Detected cycle import during parsing %s", module) - } - - // Case 3. - // Add a placeholder to indicate "load in progress". - s.cache[module] = nil - - if !strings.HasPrefix(module, universe.GitPrefix) { - var data interface{} - globals, err := starlark.ExecFile(thread, module, data, s.predeclared) - e = &entry{globals, err} - } else { - // exec remote git repo - url := module[len(universe.GitPrefix):] - path, err := fileutil.DownloadOrUpdateGitRepo(url) - if err != nil { - return nil, err - } - globals, err := s.loadGitModule(thread, path) - e = &entry{globals, err} - } - - // Update the cache. - s.cache[module] = e - - return e.globals, e.err -} - -func (s *generalInterpreter) loadGitModule(thread *starlark.Thread, path string) (globals starlark.StringDict, err error) { - var src interface{} - globals = starlark.StringDict{} - logger := logrus.WithField("file", thread.Name) - logger.Debugf("load git module from: %s", path) - err = filepath.WalkDir(path, func(path string, d fs.DirEntry, err error) error { - if err != nil { - return err - } - if d.IsDir() || !strings.HasSuffix(d.Name(), ".envd") { - return nil - } - dict, err := starlark.ExecFile(thread, path, src, s.predeclared) - if err != nil { - return err - } - for key, val := range dict { - if _, exist := globals[key]; exist { - return errors.Newf("found duplicated object name: %s in %s", key, path) - } - if !strings.HasPrefix(key, "_") { - globals[key] = val - } - } - return nil - }) - return -} - -func (s generalInterpreter) ExecFile(filename string, funcname string) (interface{}, error) { - logrus.WithField("filename", filename).Debug("interpret the file") - thread := s.NewThread(filename) - globals, err := s.exec(thread, filename) - if err != nil { - return nil, err - } - if funcname != "" { - logrus.Debugf("Execute %s func", funcname) - if globals.Has(funcname) { - buildVar := globals[funcname] - if fn, ok := buildVar.(*starlark.Function); ok { - _, err := starlark.Call(thread, fn, nil, nil) - if err != nil { - return nil, errors.Wrapf(err, "Exception when exec %s func", funcname) - } - } else { - return nil, errors.Errorf("%s is not a function", funcname) - } - } else { - return nil, errors.Errorf("envd file doesn't has %s function", funcname) - } - - } - return globals, nil -} - -func (s generalInterpreter) Eval(script string) (interface{}, error) { - thread := s.NewThread(script) - return starlark.ExecFile(thread, "", script, s.predeclared) -} - -func GetEnvdProgramHash(filename string) (string, error) { - envdSrc, err := os.ReadFile(filename) - if err != nil { - return "", err - } - // No Check builtin or predeclared for now - funcAlwaysHas := func(x string) bool { - return true - } - _, prog, err := starlark.SourceProgram(filename, envdSrc, funcAlwaysHas) - if err != nil { - return "", err - } - buf := new(bytes.Buffer) - err = prog.Write(buf) - if err != nil { - return "", err - } - h := fnv.New64a() - h.Write(buf.Bytes()) - hashsum := h.Sum64() - return strconv.FormatUint(hashsum, 16), nil -} diff --git a/pkg/lang/frontend/starlark/v0/interpreter_test.go b/pkg/lang/frontend/starlark/v0/interpreter_test.go deleted file mode 100644 index fd62e86b3..000000000 --- a/pkg/lang/frontend/starlark/v0/interpreter_test.go +++ /dev/null @@ -1,29 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" -) - -var _ = Describe("Starlark", func() { - It("should be able to compile envd", func() { - filename := "testdata/test.envd" - hash, err := GetEnvdProgramHash(filename) - Expect(err).NotTo(HaveOccurred()) - Expect(hash).To(Equal("92dcb859b270c28c")) - }) -}) diff --git a/pkg/lang/frontend/starlark/v0/io/const.go b/pkg/lang/frontend/starlark/v0/io/const.go deleted file mode 100644 index 391ff50fe..000000000 --- a/pkg/lang/frontend/starlark/v0/io/const.go +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package io - -const ( - ruleCopy = "io.copy" - ruleHTTP = "io.http" -) diff --git a/pkg/lang/frontend/starlark/v0/io/io.go b/pkg/lang/frontend/starlark/v0/io/io.go deleted file mode 100644 index 3d985de7e..000000000 --- a/pkg/lang/frontend/starlark/v0/io/io.go +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package io - -import ( - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - "go.starlark.net/starlarkstruct" - - ir "github.com/tensorchord/envd/pkg/lang/ir/v0" -) - -var ( - logger = logrus.WithField("frontend", "starlark") -) - -var Module = &starlarkstruct.Module{ - Name: "io", - Members: starlark.StringDict{ - "copy": starlark.NewBuiltin(ruleCopy, ruleFuncCopy), - "http": starlark.NewBuiltin(ruleHTTP, ruleFuncHTTP), - }, -} - -func ruleFuncCopy(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var source, destination starlark.String - - if err := starlark.UnpackArgs(ruleCopy, args, kwargs, - "host_path?", &source, "envd_path?", &destination); err != nil { - return nil, err - } - - sourceStr := source.GoString() - destinationStr := destination.GoString() - - logger.Debugf("rule `%s` is invoked, src=%s, dest=%s\n", - ruleCopy, sourceStr, destinationStr) - ir.Copy(sourceStr, destinationStr) - - return starlark.None, nil -} - -func ruleFuncHTTP(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var url, checksum, filename string - if err := starlark.UnpackArgs(ruleHTTP, args, kwargs, - "url", &url, "checksum?", &checksum, "filename?", &filename); err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, ruleHTTP, url=%s, checksum=%s, filename=%s\n", - ruleHTTP, url, checksum, filename) - if err := ir.HTTP(url, checksum, filename); err != nil { - return nil, err - } - return starlark.None, nil -} diff --git a/pkg/lang/frontend/starlark/v0/runtime/const.go b/pkg/lang/frontend/starlark/v0/runtime/const.go deleted file mode 100644 index 5143851c7..000000000 --- a/pkg/lang/frontend/starlark/v0/runtime/const.go +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -const ( - ruleCommand = "runtime.command" - ruleExpose = "runtime.expose" - ruleDaemon = "runtime.daemon" - ruleEnviron = "runtime.environ" - ruleMount = "runtime.mount" - ruleInitScript = "runtime.init" -) diff --git a/pkg/lang/frontend/starlark/v0/runtime/runtime.go b/pkg/lang/frontend/starlark/v0/runtime/runtime.go deleted file mode 100644 index b060b9188..000000000 --- a/pkg/lang/frontend/starlark/v0/runtime/runtime.go +++ /dev/null @@ -1,238 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package runtime - -import ( - "net" - "os/user" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - "go.starlark.net/starlarkstruct" - - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/data" - ir "github.com/tensorchord/envd/pkg/lang/ir/v0" - "github.com/tensorchord/envd/pkg/util/fileutil" - "github.com/tensorchord/envd/pkg/util/starlarkutil" -) - -var ( - logger = logrus.WithField("frontend", "starlark") -) - -var Module = &starlarkstruct.Module{ - Name: "runtime", - Members: starlark.StringDict{ - "command": starlark.NewBuiltin(ruleCommand, ruleFuncCommand), - "daemon": starlark.NewBuiltin(ruleDaemon, ruleFuncDaemon), - "expose": starlark.NewBuiltin(ruleExpose, ruleFuncExpose), - "environ": starlark.NewBuiltin(ruleEnviron, ruleFuncEnviron), - "mount": starlark.NewBuiltin(ruleMount, ruleFuncMount), - "init": starlark.NewBuiltin(ruleInitScript, ruleFuncInitScript), - }, -} - -func ruleFuncCommand(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var commands starlark.IterableMapping - - if err := starlark.UnpackArgs(ruleCommand, args, kwargs, - "commands?", &commands); err != nil { - return nil, err - } - - commandsMap := make(map[string]string) - for _, tuple := range commands.Items() { - if len(tuple) != 2 { - return nil, errors.Newf("invalid command in %s", ruleCommand) - } - - commandsMap[tuple[0].(starlark.String).GoString()] = - tuple[1].(starlark.String).GoString() - } - - logger.Debugf("rule `%s` is invoked, commands: %v", - ruleCommand, commandsMap) - - ir.RuntimeCommands(commandsMap) - return starlark.None, nil -} - -func ruleFuncDaemon(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var commands *starlark.List - - if err := starlark.UnpackArgs(ruleDaemon, args, kwargs, "commands", &commands); err != nil { - return nil, err - } - - commandList := [][]string{} - if commands != nil { - for i := 0; i < commands.Len(); i++ { - args, ok := commands.Index(i).(*starlark.List) - if !ok { - return nil, errors.Newf("invalid daemon commands (%s)", commands.Index(i).String()) - } - argList := []string{} - for j := 0; j < args.Len(); j++ { - argList = append(argList, args.Index(j).(starlark.String).GoString()) - } - commandList = append(commandList, argList) - } - - logger.Debugf("rule `%s` is invoked, commands=%v", ruleDaemon, commandList) - ir.RuntimeDaemon(commandList) - } - return starlark.None, nil -} - -func ruleFuncExpose(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var ( - envdPort starlark.Int - hostPort = starlark.MakeInt(0) // 0 means envd can randomly choose a free port - serviceName = starlark.String("") - listeningAddr = starlark.String("127.0.0.1") // default to lisen only on local loopback interface - ) - - if err := starlark.UnpackArgs(ruleExpose, - args, kwargs, "envd_port", &envdPort, "host_port?", &hostPort, "service?", &serviceName, "listen_addr?", &listeningAddr); err != nil { - return nil, err - } - envdPortInt, ok := envdPort.Int64() - if !ok || envdPortInt < 1 || envdPortInt > 65535 { - return nil, errors.New("envd_port must be a positive integer less than 65535") - } - hostPortInt, ok := hostPort.Int64() - if !ok || hostPortInt < 0 || hostPortInt > 65535 { - return nil, errors.New("host_port must be a positive integer less than 65535") - } - serviceNameStr := serviceName.GoString() - listeningAddrStr := listeningAddr.GoString() - if net.ParseIP(listeningAddrStr) == nil { - return nil, errors.New("listening_addr must be a valid IP address") - } - - logger.Debugf("rule `%s` is invoked, envd_port=%d, host_port=%d, service=%s", ruleExpose, envdPortInt, hostPortInt, serviceNameStr) - err := ir.RuntimeExpose(int(envdPortInt), int(hostPortInt), serviceNameStr, listeningAddrStr) - return starlark.None, err -} - -func ruleFuncEnviron(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var env starlark.IterableMapping - var path *starlark.List - - if err := starlark.UnpackArgs(ruleCommand, args, kwargs, - "env?", &env, "extra_path?", &path); err != nil { - return nil, err - } - - envMap := make(map[string]string) - if env != nil { - for _, tuple := range env.Items() { - if len(tuple) != 2 { - return nil, errors.Newf("invalid env (%s)", tuple.String()) - } - envMap[tuple[0].(starlark.String).GoString()] = tuple[1].(starlark.String).GoString() - } - } - - pathList, err := starlarkutil.ToStringSlice(path) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, env: %v, extra_path: %v", ruleEnviron, envMap, pathList) - ir.RuntimeEnviron(envMap, pathList) - return starlark.None, nil -} - -func ruleFuncMount(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var source starlark.Value - var destination starlark.String - - if err := starlark.UnpackArgs(ruleMount, args, kwargs, - "host_path?", &source, "envd_path?", &destination); err != nil { - return nil, err - } - - var sourceStr string - var err error - - if v, ok := source.(*data.DataSourceValue); ok { - err = v.Init() - if err != nil { - return starlark.None, err - } - sourceStr, err = v.GetHostDir() - if err != nil { - return starlark.None, err - } - } else if vs, ok := source.(starlark.String); ok { - sourceStr = vs.GoString() - } else { - return starlark.None, errors.New("invalid data source") - } - - destinationStr := destination.GoString() - - logger.Debugf("rule `%s` is invoked, src=%s, dest=%s", - ruleMount, sourceStr, destinationStr) - - // Expand source directory based on host user - usr, _ := user.Current() - dir := usr.HomeDir - if sourceStr == "~" { - sourceStr = dir - } else if strings.HasPrefix(sourceStr, "~/") { - sourceStr = filepath.Join(dir, sourceStr[2:]) - } - // Expand dest directory based on container user envd - dir = fileutil.EnvdHomeDir() - if destinationStr == "~" { - destinationStr = dir - } else if strings.HasPrefix(destinationStr, "~/") { - destinationStr = fileutil.EnvdHomeDir(destinationStr[2:]) - } - ir.Mount(sourceStr, destinationStr) - - return starlark.None, nil -} - -func ruleFuncInitScript(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var commands *starlark.List - - if err := starlark.UnpackArgs(ruleCommand, args, kwargs, - "commands?", &commands); err != nil { - return nil, err - } - - commandsSlice, err := starlarkutil.ToStringSlice(commands) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, commands: %v", - ruleInitScript, commandsSlice) - - ir.RuntimeInitScript(commandsSlice) - return starlark.None, nil -} diff --git a/pkg/lang/frontend/starlark/v0/starlark_suite_test.go b/pkg/lang/frontend/starlark/v0/starlark_suite_test.go deleted file mode 100644 index 1bc312703..000000000 --- a/pkg/lang/frontend/starlark/v0/starlark_suite_test.go +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "testing" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" -) - -func TestManager(t *testing.T) { - RegisterFailHandler(Fail) - RunSpecs(t, "Starlark Suite") -} diff --git a/pkg/lang/frontend/starlark/v0/testdata/test.envd b/pkg/lang/frontend/starlark/v0/testdata/test.envd deleted file mode 100644 index 33bee60f7..000000000 --- a/pkg/lang/frontend/starlark/v0/testdata/test.envd +++ /dev/null @@ -1,8 +0,0 @@ -def build(): - base(os="ubuntu22.04", language="python3") - install.python_packages( - name=[ - "numpy", - ] - ) - shell("zsh") diff --git a/pkg/lang/frontend/starlark/v0/universe/const.go b/pkg/lang/frontend/starlark/v0/universe/const.go deleted file mode 100644 index 4528bce4f..000000000 --- a/pkg/lang/frontend/starlark/v0/universe/const.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package universe - -const ( - ruleBase = "base" - ruleShell = "shell" - ruleRun = "run" - ruleGitConfig = "git_config" - ruleInclude = "include" - - GitPrefix = "git@" -) diff --git a/pkg/lang/frontend/starlark/v0/universe/universe.go b/pkg/lang/frontend/starlark/v0/universe/universe.go deleted file mode 100644 index 106ba7c94..000000000 --- a/pkg/lang/frontend/starlark/v0/universe/universe.go +++ /dev/null @@ -1,141 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package universe - -import ( - "fmt" - - "github.com/sirupsen/logrus" - "go.starlark.net/starlark" - "go.starlark.net/starlarkstruct" - - "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0/builtin" - ir "github.com/tensorchord/envd/pkg/lang/ir/v0" - "github.com/tensorchord/envd/pkg/util/starlarkutil" -) - -var ( - logger = logrus.WithField("frontend", "starlark") -) - -// RegisterEnvdRules registers built-in envd rules into the global namespace. -func RegisterEnvdRules() { - starlark.Universe[ruleBase] = starlark.NewBuiltin(ruleBase, ruleFuncBase) - starlark.Universe[ruleShell] = starlark.NewBuiltin(ruleShell, ruleFuncShell) - starlark.Universe[ruleRun] = starlark.NewBuiltin(ruleRun, ruleFuncRun) - starlark.Universe[ruleGitConfig] = starlark.NewBuiltin(ruleGitConfig, ruleFuncGitConfig) - starlark.Universe[ruleInclude] = starlark.NewBuiltin(ruleInclude, ruleFuncInclude) -} - -func RegisterBuildContext(buildContextDir string) { - starlark.Universe[builtin.BuildContextDir] = starlark.String(buildContextDir) -} - -func ruleFuncBase(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var os, language, image string - - if err := starlark.UnpackArgs(ruleBase, args, kwargs, - "os?", &os, "language?", &language, "image?", &image); err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, os=%s, language=%s, image=%s\n", - ruleBase, os, language, image) - - err := ir.Base(os, language, image) - return starlark.None, err -} - -func ruleFuncRun(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var commands *starlark.List - mountHost := false - - if err := starlark.UnpackArgs(ruleRun, - args, kwargs, "commands", &commands, "mount_host?", &mountHost); err != nil { - return nil, err - } - - goCommands, err := starlarkutil.ToStringSlice(commands) - if err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, commands=%v, mount_host=%t", ruleRun, goCommands, mountHost) - if err := ir.Run(goCommands, mountHost); err != nil { - return nil, err - } - - return starlark.None, nil -} - -func ruleFuncShell(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var shell starlark.String - - if err := starlark.UnpackPositionalArgs(ruleShell, args, kwargs, 1, &shell); err != nil { - return nil, err - } - - shellStr := shell.GoString() - - logger.Debugf("rule `%s` is invoked, shell=%s", ruleShell, shellStr) - - err := ir.Shell(shellStr) - return starlark.None, err -} - -func ruleFuncGitConfig(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var name, email, editor starlark.String - - if err := starlark.UnpackArgs(ruleGitConfig, - args, kwargs, "name?", &name, "email?", &email, "editor?", &editor); err != nil { - return nil, err - } - - nameStr := name.GoString() - emailStr := email.GoString() - editorStr := editor.GoString() - - logger.Debugf("rule `%s` is invoked, name=%s, email=%s, editor=%s", - ruleGitConfig, nameStr, emailStr, editorStr) - - err := ir.Git(nameStr, emailStr, editorStr) - return starlark.None, err -} - -func ruleFuncInclude(thread *starlark.Thread, _ *starlark.Builtin, - args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { - var gitRepo string - - if err := starlark.UnpackArgs(ruleInclude, - args, kwargs, "git?", &gitRepo); err != nil { - return nil, err - } - - logger.Debugf("rule `%s` is invoked, git=%s", ruleInclude, gitRepo) - - globals, err := thread.Load(thread, fmt.Sprintf("%s%s", GitPrefix, gitRepo)) - if err != nil { - return nil, err - } - module := &starlarkstruct.Module{ - Name: gitRepo, - Members: globals, - } - return module, nil -} diff --git a/pkg/lang/ir/graph.go b/pkg/lang/ir/graph.go index 595c54e69..be0404ae2 100644 --- a/pkg/lang/ir/graph.go +++ b/pkg/lang/ir/graph.go @@ -18,13 +18,13 @@ import ( "context" "github.com/moby/buildkit/client/llb" - ocispecs "github.com/opencontainers/image-spec/specs-go/v1" + specs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/tensorchord/envd/pkg/progress/compileui" ) type Graph interface { - Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) + Compile(ctx context.Context, envPath string, pub string, platform *specs.Platform, progressMode string) (*llb.Definition, error) graphDebugger graphVisitor @@ -59,6 +59,6 @@ type graphVisitor interface { GetHTTP() []HTTPInfo GetRuntimeCommands() map[string]string GetUser() string - GetPlatform() *ocispecs.Platform + GetPlatform() *specs.Platform GetWorkingDir() string } diff --git a/pkg/lang/ir/util.go b/pkg/lang/ir/util.go index 744f7f31b..c079ec2ec 100644 --- a/pkg/lang/ir/util.go +++ b/pkg/lang/ir/util.go @@ -23,10 +23,10 @@ import ( "github.com/containers/image/v5/docker" "github.com/containers/image/v5/image" "github.com/containers/image/v5/types" - v1 "github.com/opencontainers/image-spec/specs-go/v1" + specs "github.com/opencontainers/image-spec/specs-go/v1" ) -func FetchImageConfig(ctx context.Context, imageName string, platform *v1.Platform) (config v1.ImageConfig, err error) { +func FetchImageConfig(ctx context.Context, imageName string, platform *specs.Platform) (config specs.ImageConfig, err error) { ref, err := docker.ParseReference(fmt.Sprintf("//%s", imageName)) if err != nil { return config, errors.Wrap(err, "failed to parse image reference") diff --git a/pkg/lang/ir/v0/cache.go b/pkg/lang/ir/v0/cache.go deleted file mode 100644 index 8c7ca9bea..000000000 --- a/pkg/lang/ir/v0/cache.go +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - - "github.com/sirupsen/logrus" -) - -func (g generalGraph) CacheID(filename string) string { - var cacheID string - if g.CUDA != nil { - cacheID = fmt.Sprintf("%s-gpu", filename) - } else { - cacheID = fmt.Sprintf("%s-cpu", filename) - } - logrus.Debugf("%s calculated cacheID: %s", filename, cacheID) - return cacheID -} diff --git a/pkg/lang/ir/v0/checker.go b/pkg/lang/ir/v0/checker.go deleted file mode 100644 index 89d9a12d9..000000000 --- a/pkg/lang/ir/v0/checker.go +++ /dev/null @@ -1,79 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "reflect" - "regexp" - "strings" -) - -func (g generalGraph) GetDepsFiles(deps []string) []string { - tHandle := reflect.TypeOf(g) - vHandle := reflect.ValueOf(g) - deps = searchFileInGraph(tHandle, vHandle, deps) - return deps -} - -// Match all filed in ir.Graph with the given keyword -func likeFileFiled(str string) bool { - nameKeyword := []string{ - "File", - "Path", - "Wheels", - } - if len(nameKeyword) == 0 { - return true - } - re := regexp.MustCompile(strings.Join(nameKeyword, "|")) - return re.MatchString(str) -} - -// search all files in Graph -func searchFileInGraph(tHandle reflect.Type, vHandle reflect.Value, deps []string) []string { - for i := 0; i < vHandle.NumField(); i++ { - v := vHandle.Field(i) - if v.Type().Kind() == reflect.Struct { - t := v.Type() - deps = searchFileInGraph(t, v, deps) - } else if v.Type().Kind() == reflect.Ptr { - if v.Type().Elem().Kind() == reflect.Struct { - if v.Elem().CanAddr() { - t := v.Type().Elem() - deps = searchFileInGraph(t, v.Elem(), deps) - } - } - } else { - t := tHandle.Field(i) - fieldName := t.Name - if likeFileFiled(fieldName) { - typeName := t.Type.String() - if v.Interface() != nil { - if typeName == "string" { - deps = append(deps, v.Interface().(string)) - } - if typeName == "*string" { - deps = append(deps, *(v.Interface().(*string))) - } - if typeName == "[]string" { - filesList := v.Interface().([]string) - deps = append(deps, filesList...) - } - } - } - } - } - return deps -} diff --git a/pkg/lang/ir/v0/compile.go b/pkg/lang/ir/v0/compile.go deleted file mode 100644 index 176d6d4d4..000000000 --- a/pkg/lang/ir/v0/compile.go +++ /dev/null @@ -1,375 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "context" - "encoding/json" - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - ocispecs "github.com/opencontainers/image-spec/specs-go/v1" - "github.com/sirupsen/logrus" - "github.com/spf13/viper" - servertypes "github.com/tensorchord/envd-server/api/types" - - "github.com/tensorchord/envd/pkg/config" - "github.com/tensorchord/envd/pkg/flag" - "github.com/tensorchord/envd/pkg/lang/ir" - "github.com/tensorchord/envd/pkg/progress/compileui" - "github.com/tensorchord/envd/pkg/types" - "github.com/tensorchord/envd/pkg/util/fileutil" - "github.com/tensorchord/envd/pkg/version" -) - -func NewGraph() ir.Graph { - runtimeGraph := ir.RuntimeGraph{ - RuntimeCommands: make(map[string]string), - RuntimeEnviron: make(map[string]string), - RuntimeEnvPaths: []string{types.DefaultSystemPath}, - } - langVersion := languageVersionDefault - conda := &ir.CondaConfig{} - return &generalGraph{ - OS: osDefault, - EnvdSyntaxVersion: "v0", - Language: ir.Language{ - Name: languageDefault, - Version: &langVersion, - }, - CUDA: nil, - CUDNN: CUDNNVersionDefault, - NumGPUs: 0, - ShmSize: 0, - - PyPIPackages: [][]string{}, - RPackages: []string{}, - JuliaPackages: []string{}, - SystemPackages: []string{}, - Exec: []ir.RunBuildCommand{}, - UserDirectories: []string{}, - Shell: shellBASH, - CondaConfig: conda, - RuntimeGraph: runtimeGraph, - Platform: &ocispecs.Platform{}, - WorkingDir: "/", - } -} - -var DefaultGraph = NewGraph() - -func (g generalGraph) IsDev() bool { - return g.Image == nil -} - -func (g generalGraph) GetShmSize() int { - return g.ShmSize -} - -func (g generalGraph) GetNumGPUs() int { - return g.NumGPUs -} - -func (g generalGraph) GetShell() string { - return g.Shell -} - -func (g generalGraph) GetMount() []ir.MountInfo { - return g.Mount -} - -func (g generalGraph) GetEnvironmentName() string { - return g.EnvironmentName -} - -func (g generalGraph) GetJupyterConfig() *ir.JupyterConfig { - return g.JupyterConfig -} - -func (g generalGraph) GetRStudioServerConfig() *ir.RStudioServerConfig { - return g.RStudioServerConfig -} - -func (g generalGraph) GetExposedPorts() []ir.ExposeItem { - return g.RuntimeExpose -} - -func (g generalGraph) GetRuntimeCommands() map[string]string { - return g.RuntimeCommands -} - -func (g generalGraph) GetUser() string { - return "envd" -} - -func (g generalGraph) GetPlatform() *ocispecs.Platform { - return g.Platform -} - -func (g generalGraph) GetWorkingDir() string { - return g.WorkingDir -} - -func (g *generalGraph) Compile(ctx context.Context, envPath string, pub string, platform *ocispecs.Platform, progressMode string) (*llb.Definition, error) { - w, err := compileui.New(ctx, os.Stdout, progressMode) - if err != nil { - return nil, errors.Wrap(err, "failed to create compileui") - } - g.Writer = w - g.EnvironmentPath = envPath - g.EnvironmentName = filepath.Base(envPath) - g.PublicKeyPath = pub - g.Platform = platform - - uid, gid, err := getUIDGID() - if err != nil { - return nil, errors.Wrap(err, "failed to get uid/gid") - } - state, err := g.CompileLLB(uid, gid) - if err != nil { - return nil, errors.Wrap(err, "failed to compile the graph") - } - def, err := state.Marshal(ctx, llb.Platform(*g.Platform)) - if err != nil { - return nil, errors.Wrap(err, "failed to marshal the llb definition") - } - return def, nil -} - -func (g generalGraph) GPUEnabled() bool { - return g.CUDA != nil -} - -func (g generalGraph) Labels() (map[string]string, error) { - labels := make(map[string]string) - - labels[types.ImageLabelSyntaxVer] = g.EnvdSyntaxVersion - - str, err := json.Marshal(g.SystemPackages) - if err != nil { - return nil, err - } - labels[types.ImageLabelAPT] = string(str) - pyPackages := []string{} - for _, pkg := range g.PyPIPackages { - pyPackages = append(pyPackages, pkg...) - } - str, err = json.Marshal(pyPackages) - if err != nil { - return nil, err - } - labels[types.ImageLabelPyPI] = string(str) - str, err = json.Marshal(g.RPackages) - if err != nil { - return nil, err - } - labels[types.ImageLabelR] = string(str) - if g.GPUEnabled() { - labels[types.ImageLabelGPU] = "true" - labels[types.ImageLabelCUDA] = *g.CUDA - labels[types.ImageLabelCUDNN] = g.CUDNN - } - labels[types.ImageLabelVendor] = types.ImageVendorEnvd - code, err := g.RuntimeGraph.Dump() - if err != nil { - return labels, err - } - labels[types.RuntimeGraphCode] = code - code, err = g.Dump() - if err != nil { - return labels, err - } - labels[types.GeneralGraphCode] = code - - ports := []servertypes.EnvironmentPort{} - ports = append(ports, servertypes.EnvironmentPort{ - Name: "ssh", - Port: config.SSHPortInContainer, - }) - if g.JupyterConfig != nil { - ports = append(ports, servertypes.EnvironmentPort{ - Name: "jupyter", - Port: config.JupyterPortInContainer, - }) - } - if g.RStudioServerConfig != nil { - ports = append(ports, servertypes.EnvironmentPort{ - Name: "rstudio-server", - Port: config.RStudioServerPortInContainer, - }) - } - - if len(g.RuntimeExpose) > 0 { - for _, item := range g.RuntimeExpose { - ports = append(ports, servertypes.EnvironmentPort{ - Name: item.ServiceName, - Port: int32(item.EnvdPort), - }) - } - } - - portsData, err := json.Marshal(ports) - if err != nil { - return labels, err - } - labels[types.ImageLabelPorts] = string(portsData) - - repoInfo, err := json.Marshal(g.Repo) - if err != nil { - return labels, err - } - labels[types.ImageLabelRepo] = string(repoInfo) - - labels[types.ImageLabelContainerName] = g.EnvironmentName - return labels, nil -} - -func (g generalGraph) ExposedPorts() (map[string]struct{}, error) { - ports := make(map[string]struct{}) - - // do not expose ports for custom images - if g.Image != nil { - return ports, nil - } - - ports[fmt.Sprintf("%d/tcp", config.SSHPortInContainer)] = struct{}{} - if g.JupyterConfig != nil { - ports[fmt.Sprintf("%d/tcp", config.JupyterPortInContainer)] = struct{}{} - } - if g.RStudioServerConfig != nil { - ports[fmt.Sprintf("%d/tcp", config.RStudioServerPortInContainer)] = struct{}{} - } - - if len(g.RuntimeExpose) > 0 { - for _, item := range g.RuntimeExpose { - ports[fmt.Sprintf("%d/tcp", item.EnvdPort)] = struct{}{} - } - } - - return ports, nil -} - -func (g generalGraph) EnvString() []string { - var envs []string - for k, v := range g.RuntimeEnviron { - envs = append(envs, fmt.Sprintf("%s=%s", k, v)) - } - envs = append(envs, fmt.Sprintf("PATH=%s", strings.Join(g.RuntimeEnvPaths, ":"))) - return envs -} - -func (g generalGraph) GetEnviron() []string { - if g.Image != nil { - return g.EnvString() - } - return append(g.EnvString(), - "LC_ALL=en_US.UTF-8", - "LANG=en_US.UTF-8", - ) -} - -func (g *generalGraph) SetWriter(w compileui.Writer) { - g.Writer = w -} - -func (g generalGraph) GetHTTP() []ir.HTTPInfo { - return g.HTTP -} - -func (g generalGraph) DefaultCacheImporter() (*string, error) { - // The base remote cache should work for all languages. - var res string - if g.CUDA != nil { - res = fmt.Sprintf( - "type=registry,ref=docker.io/%s/python-cache:envd-%s-cuda-%s-cudnn-%s", - viper.GetString(flag.FlagDockerOrganization), - version.GetVersionForImageTag(), *g.CUDA, g.CUDNN) - } else { - res = fmt.Sprintf( - "type=registry,ref=docker.io/%s/python-cache:envd-%s", - viper.GetString(flag.FlagDockerOrganization), - version.GetVersionForImageTag()) - } - return &res, nil -} - -func (g *generalGraph) GetEntrypoint(buildContextDir string) ([]string, error) { - if g.Image != nil { - return g.Entrypoint, nil - } - g.RuntimeEnviron[types.EnvdWorkDir] = fileutil.EnvdHomeDir(filepath.Base(buildContextDir)) - return []string{"horust"}, nil -} - -func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { - g.uid = uid - - // TODO(gaocegege): Remove the hack for https://github.com/tensorchord/envd/issues/370 - g.gid = 1001 - logrus.WithFields(logrus.Fields{ - "uid": g.uid, - "gid": g.gid, - }).Debug("compile LLB") - - // TODO(gaocegege): Support more OS and langs. - aptStage, err := g.compileBase() - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get the base image") - } - var merged llb.State - // Use custom logic when image is specified. - if g.Image != nil { - merged, err = g.compileCustomPython(aptStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile custom python image") - } - } else { - switch g.Language.Name { - case "r": - merged, err = g.compileRLang(aptStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile r language") - } - case "python": - merged, err = g.compilePython(aptStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile python") - } - case "julia": - merged, err = g.compileJulia(aptStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile julia") - } - } - } - - prompt := g.compilePrompt(merged) - copy := g.compileCopy(prompt) - // TODO(gaocegege): Support order-based exec. - run := g.compileRun(copy) - git := g.compileGit(run) - user := g.compileUserOwn(git) - mount := g.compileMountDir(user) - entrypoint, err := g.compileEntrypoint(mount) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile entrypoint") - } - g.Writer.Finish() - return entrypoint, nil -} diff --git a/pkg/lang/ir/v0/conda.go b/pkg/lang/ir/v0/conda.go deleted file mode 100644 index ba01d7a1d..000000000 --- a/pkg/lang/ir/v0/conda.go +++ /dev/null @@ -1,161 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - _ "embed" - "fmt" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - "github.com/sirupsen/logrus" - - "github.com/tensorchord/envd/pkg/flag" - "github.com/tensorchord/envd/pkg/types" -) - -const ( - condaVersionDefault = "py311_24.11.1-0" - // check the issue https://github.com/mamba-org/mamba/issues/1975 - mambaVersionDefault = "0.25.1" - condaRootPrefix = "/opt/conda" - condaBinDir = "/opt/conda/bin" -) - -var ( - // this file can be used by both conda and mamba - // https://mamba.readthedocs.io/en/latest/user_guide/configuration.html#multiple-rc-files - condarc = "/opt/conda/.condarc" - //go:embed install-conda.sh - installCondaBash string - //go:embed install-mamba.sh - installMambaBash string -) - -func (g generalGraph) compileCondaChannel(root llb.State) llb.State { - if g.CondaConfig.CondaChannel != nil { - logrus.WithField("conda-channel", *g.CondaChannel).Debug("using custom conda channel") - stage := root. - File(llb.Mkfile(condarc, - 0644, []byte(*g.CondaChannel), llb.WithUIDGID(g.uid, g.gid)), llb.WithCustomName("[internal] setting conda channel")) - return stage - } - return root -} - -func (g generalGraph) condaCommandPath() string { - if g.CondaConfig.UseMicroMamba { - return filepath.Join(condaBinDir, "micromamba") - } - return filepath.Join(condaBinDir, "conda") -} - -func (g generalGraph) condaInitShell(shell string) string { - path := g.condaCommandPath() - if g.CondaConfig.UseMicroMamba { - return fmt.Sprintf("%s shell init -p %s -s %s", path, condaRootPrefix, shell) - } - return fmt.Sprintf("%s init %s", path, shell) -} - -func (g generalGraph) condaUpdateFromFile() string { - args := fmt.Sprintf("update -n envd --file %s", g.CondaEnvFileName) - if g.CondaConfig.UseMicroMamba { - return fmt.Sprintf("%s %s", g.condaCommandPath(), args) - } - return fmt.Sprintf("%s env %s", g.condaCommandPath(), args) -} - -func (g *generalGraph) compileCondaPackages(root llb.State) llb.State { - if len(g.CondaConfig.CondaPackages) == 0 && len(g.CondaEnvFileName) == 0 { - logrus.Debug("Conda packages not enabled") - return root - } - - cacheDir := filepath.Join(condaRootPrefix, "pkgs") - // Refer to https://github.com/moby/buildkit/blob/31054718bf775bf32d1376fe1f3611985f837584/frontend/dockerfile/dockerfile2llb/convert_runmount.go#L46 - cacheMount := llb.Scratch().File(llb.Mkdir("/cache-conda", 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] setting conda cache mount permissions")) - - // Compose the package install command. - var sb strings.Builder - var run llb.ExecState - - if len(g.CondaEnvFileName) > 0 { - sb.WriteString(g.condaUpdateFromFile()) - } else { - if len(g.CondaConfig.AdditionalChannels) == 0 { - sb.WriteString(fmt.Sprintf("%s install -n envd", g.condaCommandPath())) - } else { - sb.WriteString(fmt.Sprintf("%s install -n envd", g.condaCommandPath())) - for _, channel := range g.CondaConfig.AdditionalChannels { - sb.WriteString(fmt.Sprintf(" -c %s", channel)) - } - } - for _, pkg := range g.CondaConfig.CondaPackages { - sb.WriteString(fmt.Sprintf(" %s", pkg)) - } - } - - cmd := sb.String() - run = root.Dir(g.getWorkingDir()). - Run(llb.Shlex(cmd), llb.WithCustomNamef("[internal] %s %s", - cmd, strings.Join(g.CondaPackages, " "))) - run.AddMount(g.getWorkingDir(), llb.Local(flag.FlagBuildContext)) - run.AddMount(cacheDir, cacheMount, - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache-conda")) - return run.Root() -} - -func (g generalGraph) compileCondaEnvironment(root llb.State) (llb.State, error) { - // Always init bash since we will use it to create jupyter notebook service. - run := root.Run( - llb.Shlexf(`bash -c "%s"`, g.condaInitShell("bash")), - llb.WithCustomName("[internal] initialize conda bash environment"), - ) - - pythonVersion, err := g.getAppropriatePythonVersion() - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get python version") - } - // Create a conda environment. - cmd := fmt.Sprintf("bash -c \"%s create -n envd python=%s\"", g.condaCommandPath(), pythonVersion) - run = run.Run(llb.Shlex(cmd), - llb.WithCustomNamef("[internal] create conda environment: %s", cmd)) - - return run.Root(), nil -} - -func (g *generalGraph) installConda(root llb.State) llb.State { - root = g.updateEnvPath(root, types.DefaultCondaPath) - // this directory is related to conda envd env meta (used by `conda env config vars set key=value`) - g.UserDirectories = append(g.UserDirectories, fmt.Sprintf("%s/envs/envd/conda-meta", condaRootPrefix)) - if g.CondaConfig.UseMicroMamba { - run := root.AddEnv("MAMBA_BIN_DIR", condaBinDir). - AddEnv("MAMBA_ROOT_PREFIX", condaRootPrefix). - AddEnv("MAMBA_VERSION", mambaVersionDefault). - Run(llb.Shlexf("bash -c '%s'", installMambaBash), - llb.WithCustomName("[internal] install micro mamba")) - return run.Root() - } - run := root.AddEnv("CONDA_VERSION", condaVersionDefault). - File(llb.Mkdir(condaRootPrefix, 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] create conda directory")). - Run(llb.Shlexf("bash -c '%s'", installCondaBash), - llb.WithCustomName("[internal] install conda")) - return run.Root() -} diff --git a/pkg/lang/ir/v0/consts.go b/pkg/lang/ir/v0/consts.go deleted file mode 100644 index 4e68795ca..000000000 --- a/pkg/lang/ir/v0/consts.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import "github.com/tensorchord/envd/pkg/util/fileutil" - -const ( - osDefault = "ubuntu22.04" - languageDefault = "python" - languageVersionDefault = "3" - CUDNNVersionDefault = "8" - - aptSourceFilePath = "/etc/apt/sources.list" - pypiIndexFilePath = "/etc/pip.conf" - - pypiConfigTemplate = ` -[global] -index-url=%s -%s - -[install] -src = /tmp -` -) - -var ( - // used inside the container - defaultConfigDir = fileutil.EnvdHomeDir(".config") - starshipConfigPath = fileutil.EnvdHomeDir(".config", "starship.toml") -) diff --git a/pkg/lang/ir/v0/custom.go b/pkg/lang/ir/v0/custom.go deleted file mode 100644 index 77889e055..000000000 --- a/pkg/lang/ir/v0/custom.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - "strings" - - "github.com/moby/buildkit/client/llb" -) - -// nolint:unparam -func (g generalGraph) compileCustomPython(baseStage llb.State) (llb.State, error) { - aptStage := g.compileUbuntuAPT(baseStage) - pypiMirrorStage := g.compilePyPIIndex(aptStage) - systemStage := g.compileCustomSystemPackages(pypiMirrorStage) - pypiStage := g.compileCustomPyPIPackages(systemStage) - - return pypiStage, nil -} - -func (g generalGraph) compileCustomPyPIPackages(root llb.State) llb.State { - if len(g.PyPIPackages) == 0 { - return root - } - - cacheDir := "/home/root/.cache" - // Refer to https://github.com/moby/buildkit/blob/31054718bf775bf32d1376fe1f3611985f837584/frontend/dockerfile/dockerfile2llb/convert_runmount.go#L46 - cache := llb.Scratch().File(llb.Mkdir("/cache", 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] settings pip cache mount permissions")) - - for _, packages := range g.PyPIPackages { - cmd := fmt.Sprintf("pip install %s", strings.Join(packages, " ")) - run := root. - Run(llb.Shlex(cmd), llb.WithCustomNamef("pip install %s", - strings.Join(packages, " "))) - run.AddMount(cacheDir, cache, - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache")) - root = run.Root() - } - return root -} - -func (g generalGraph) compileCustomSystemPackages(root llb.State) llb.State { - if len(g.SystemPackages) == 0 { - return root - } - - // Compose the package install command. - var sb strings.Builder - sb.WriteString("apt-get update && apt-get install -y --no-install-recommends --no-install-suggests --fix-missing") - - for _, pkg := range g.SystemPackages { - sb.WriteString(fmt.Sprintf(" %s", pkg)) - } - - cacheDir := "/var/cache/apt" - cacheLibDir := "/var/lib/apt" - - run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), - llb.WithCustomNamef("apt-get install %s", - strings.Join(g.SystemPackages, " "))) - run.AddMount(cacheDir, llb.Scratch(), - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared)) - run.AddMount(cacheLibDir, llb.Scratch(), - llb.AsPersistentCacheDir(g.CacheID(cacheLibDir), llb.CacheMountShared)) - return run.Root() -} diff --git a/pkg/lang/ir/v0/editor.go b/pkg/lang/ir/v0/editor.go deleted file mode 100644 index 69deed236..000000000 --- a/pkg/lang/ir/v0/editor.go +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - "strconv" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - - "github.com/tensorchord/envd/pkg/config" - "github.com/tensorchord/envd/pkg/editor/vscode" - "github.com/tensorchord/envd/pkg/flag" - "github.com/tensorchord/envd/pkg/progress/compileui" - "github.com/tensorchord/envd/pkg/types" - "github.com/tensorchord/envd/pkg/util/fileutil" -) - -func (g generalGraph) compileVSCode() (*llb.State, error) { - if len(g.VSCodePlugins) == 0 { - return nil, nil - } - inputs := []llb.State{} - for _, p := range g.VSCodePlugins { - vscodeClient, err := vscode.NewClient(vscode.MarketplaceVendorOpenVSX) - if err != nil { - return nil, errors.Wrap(err, "failed to create vscode client") - } - g.Writer.LogVSCodePlugin(p, compileui.ActionStart, false) - cached, err := vscodeClient.DownloadOrCache(p) - if err != nil { - return nil, err - } - g.Writer.LogVSCodePlugin(p, compileui.ActionEnd, cached) - ext := llb.Scratch().File(llb.Copy(llb.Local(flag.FlagCacheDir), - vscodeClient.PluginPath(p), - fileutil.EnvdHomeDir(".vscode-server", "extensions", p.String()), - &llb.CopyInfo{ - CreateDestPath: true, - }, llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomNamef("install vscode plugin %s", p.String())) - inputs = append(inputs, ext) - } - layer := llb.Merge(inputs, llb.WithCustomName("merging plugins for vscode")) - return &layer, nil -} - -func (g *generalGraph) compileJupyter() error { - if g.JupyterConfig == nil { - return nil - } - - g.PyPIPackages = append(g.PyPIPackages, []string{"jupyter"}) - switch g.Language.Name { - case "python": - return nil - default: - return errors.Newf("Jupyter is not supported in %s yet", g.Language.Name) - } -} - -func (g generalGraph) generateJupyterCommand(workingDir string) []string { - if g.JupyterConfig == nil { - return nil - } - - if g.JupyterConfig.Token == "" { - g.JupyterConfig.Token = "''" - } - - // get from env if not set - if len(workingDir) == 0 { - workingDir = fmt.Sprintf("${%s}", types.EnvdWorkDir) - } - - cmd := []string{ - "python3", "-m", "notebook", - "--ip", "0.0.0.0", "--notebook-dir", workingDir, - "--NotebookApp.token", g.JupyterConfig.Token, - "--port", strconv.Itoa(config.JupyterPortInContainer), - } - - if g.uid == 0 { - cmd = append(cmd, "--allow-root") - } - - return cmd -} - -// nolint:unparam -func (g generalGraph) generateRStudioCommand(workingDir string) []string { - if g.RStudioServerConfig == nil { - return nil - } - - // get from env if not set - // if len(workingDir) == 0 { - // workingDir = fmt.Sprintf("${%s}", types.EnvdWorkDir) - // } - - return []string{ - // TODO(gaocegege): Remove root permission here. - "sudo", - "/usr/lib/rstudio-server/bin/rserver", - // TODO(gaocegege): Support working dir. - } -} diff --git a/pkg/lang/ir/v0/editor_test.go b/pkg/lang/ir/v0/editor_test.go deleted file mode 100644 index 5a75b39a3..000000000 --- a/pkg/lang/ir/v0/editor_test.go +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "testing" - - "github.com/tensorchord/envd/pkg/lang/ir" -) - -func TestGenerateCommand(t *testing.T) { - testcases := []struct { - graph generalGraph - dir string - expected []string - }{ - { - graph: generalGraph{ - JupyterConfig: &ir.JupyterConfig{ - Token: "", - Port: 8888, - }, - uid: 1000, - }, - dir: "test", - expected: []string{ - "python3", "-m", "notebook", "--ip", "0.0.0.0", "--notebook-dir", "test", - "--NotebookApp.token", "''", "--port", "8888", - }, - }, - { - graph: generalGraph{ - JupyterConfig: &ir.JupyterConfig{ - Token: "test", - Port: 8888, - }, - uid: 1000, - }, - dir: "test", - expected: []string{ - "python3", "-m", "notebook", "--ip", "0.0.0.0", "--notebook-dir", "test", - "--NotebookApp.token", "test", "--port", "8888", - }, - }, - { - graph: generalGraph{ - JupyterConfig: &ir.JupyterConfig{ - Token: "test", - Port: 8888, - }, - uid: 0, - }, - dir: "test", - expected: []string{ - "python3", "-m", "notebook", "--ip", "0.0.0.0", "--notebook-dir", "test", - "--NotebookApp.token", "test", "--port", "8888", "--allow-root", - }, - }, - { - graph: generalGraph{}, - dir: "test", - expected: []string{}, - }, - } - for _, tc := range testcases { - actual := tc.graph.generateJupyterCommand(tc.dir) - if !equal(actual, tc.expected) { - t.Errorf("failed to generate the command: expected %v, got %v", tc.expected, actual) - } - } -} - -// Equal tells whether a and b contain the same elements. -// A nil argument is equivalent to an empty slice. -func equal(a, b []string) bool { - if len(a) != len(b) { - return false - } - for i, v := range a { - if v != b[i] { - return false - } - } - return true -} diff --git a/pkg/lang/ir/v0/fs.go b/pkg/lang/ir/v0/fs.go deleted file mode 100644 index 5788f0bb9..000000000 --- a/pkg/lang/ir/v0/fs.go +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "github.com/moby/buildkit/client/llb" -) - -func (g *generalGraph) CompileCacheDir(root llb.State, cacheDir string) llb.State { - g.UserDirectories = append(g.UserDirectories, cacheDir) - run := root.Run(llb.Shlexf("mkdir -p %s", cacheDir), llb.WithCustomName("[internal] create cache dir")) - return run.Root() -} diff --git a/pkg/lang/ir/v0/git.go b/pkg/lang/ir/v0/git.go deleted file mode 100644 index 3f94610cc..000000000 --- a/pkg/lang/ir/v0/git.go +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - - "github.com/moby/buildkit/client/llb" - - "github.com/tensorchord/envd/pkg/util/fileutil" -) - -const ( - templateGitConfig = ` -[user] - email = %s - name = %s -[core] - editor = %s - -` -) - -func (g *generalGraph) compileGit(root llb.State) llb.State { - if g.GitConfig == nil { - return root - } - content := fmt.Sprintf(templateGitConfig, g.GitConfig.Email, g.GitConfig.Name, g.GitConfig.Editor) - installPath := fileutil.EnvdHomeDir(".gitconfig") - gitStage := root.File(llb.Mkfile(installPath, - 0644, []byte(content), llb.WithUIDGID(g.uid, g.gid))) - return gitStage -} diff --git a/pkg/lang/ir/v0/install-conda.sh b/pkg/lang/ir/v0/install-conda.sh deleted file mode 100644 index 0f930c72e..000000000 --- a/pkg/lang/ir/v0/install-conda.sh +++ /dev/null @@ -1,24 +0,0 @@ -set -euo pipefail && \ -UNAME_M="$(uname -m)" && \ -if [ "${UNAME_M}" = "x86_64" ]; then \ - MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-x86_64.sh"; \ - SHA256SUM="807774bae6cd87132094458217ebf713df436f64779faf9bb4c3d4b6615c1e3a"; \ -elif [ "${UNAME_M}" = "s390x" ]; then \ - MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-s390x.sh"; \ - SHA256SUM="bb499b18dbcbb2d89b22f91fe26fe661f5ed1f1944fdc743560d69cd52a2468f"; \ -elif [ "${UNAME_M}" = "aarch64" ]; then \ - MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-aarch64.sh"; \ - SHA256SUM="a8846ade7a5ddd9b6a6546590054d70d1c2cbe4fbe8c79fb70227e8fd93ef9f8"; \ -fi && \ -wget "${MINICONDA_URL}" -O /tmp/miniconda.sh && \ -echo "${SHA256SUM} /tmp/miniconda.sh" > /tmp/shasum && \ -if [ "${CONDA_VERSION}" != "latest" ]; then sha256sum --check --status /tmp/shasum; fi && \ -mkdir -p /opt && \ -sh /tmp/miniconda.sh -b -u -p /opt/conda && \ -rm /tmp/miniconda.sh /tmp/shasum && \ -echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \ -echo "conda activate base" >> ~/.bashrc && \ -echo -e "channels:\n - defaults" > /opt/conda/.condarc && \ -find /opt/conda/ -follow -type f -name '*.a' -delete && \ -find /opt/conda/ -follow -type f -name '*.js.map' -delete && \ -/opt/conda/bin/conda clean -afy diff --git a/pkg/lang/ir/v0/install-mamba.sh b/pkg/lang/ir/v0/install-mamba.sh deleted file mode 100644 index f9610ddfb..000000000 --- a/pkg/lang/ir/v0/install-mamba.sh +++ /dev/null @@ -1,15 +0,0 @@ -set -euo pipefail && \ -ARCH="$(uname -m)" && \ -if [[ "${ARCH}" == "aarch64" ]]; then \ - ARCH="aarch64"; \ -elif [[ "${ARCH}" == "ppc64le" ]]; then \ - ARCH="ppc64le"; \ -else \ - ARCH="64"; \ -fi && \ -mkdir -p ${MAMBA_BIN_DIR} && \ -curl -Ls https://micro.mamba.pm/api/micromamba/linux-${ARCH}/${MAMBA_VERSION} | tar -xvj -C ${MAMBA_BIN_DIR} --strip-components=1 bin/micromamba && \ -chown $(id -u):$(id -g) ${MAMBA_BIN_DIR}/micromamba -ln -s ${MAMBA_BIN_DIR}/micromamba ${MAMBA_BIN_DIR}/conda && \ -echo -e "channels:\n - defaults" > ${MAMBA_ROOT_PREFIX}/.mambarc -echo -e "#!/bin/sh\n\. ${MAMBA_ROOT_PREFIX}/etc/profile.d/micromamba.sh || return \$?\nmicromamba activate \"\$@\"" > ${MAMBA_BIN_DIR}/activate diff --git a/pkg/lang/ir/v0/interface.go b/pkg/lang/ir/v0/interface.go deleted file mode 100644 index b823fe347..000000000 --- a/pkg/lang/ir/v0/interface.go +++ /dev/null @@ -1,312 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "github.com/cockroachdb/errors" - "github.com/opencontainers/go-digest" - "github.com/sirupsen/logrus" - - "github.com/tensorchord/envd/pkg/editor/vscode" - "github.com/tensorchord/envd/pkg/lang/ir" - "github.com/tensorchord/envd/pkg/types" -) - -func Base(os, language, image string) error { - l, version, err := parseLanguage(language) - if err != nil { - return err - } - g := DefaultGraph.(*generalGraph) - g.Language = ir.Language{ - Name: l, - Version: version, - } - if len(os) > 0 { - g.OS = os - logrus.Warn("`os` only affects the GPU base image. If you want to use a different base image, " + - "envd v1 has better support. Check the doc https://envd.tensorchord.ai/guide/v1.html") - } - if image != "" { - g.Image = &image - logrus.Warn("Custom base image can only be used in non-dev env for envd v0. " + - "For better custom image support, check the envd v1 doc https://envd.tensorchord.ai/guide/v1.html") - } - return nil -} - -func PyPIPackage(deps []string, requirementsFile string, wheels []string) error { - g := DefaultGraph.(*generalGraph) - - if len(deps) > 0 { - g.PyPIPackages = append(g.PyPIPackages, deps) - } - g.PythonWheels = append(g.PythonWheels, wheels...) - - if requirementsFile != "" { - g.RequirementsFile = &requirementsFile - } - - return nil -} - -func RPackage(deps []string) { - g := DefaultGraph.(*generalGraph) - - g.RPackages = append(g.RPackages, deps...) -} - -func JuliaPackage(deps []string) { - g := DefaultGraph.(*generalGraph) - - g.JuliaPackages = append(g.JuliaPackages, deps...) -} - -func SystemPackage(deps []string) { - g := DefaultGraph.(*generalGraph) - - g.SystemPackages = append(g.SystemPackages, deps...) -} - -func ShmSize(shmSize int) { - g := DefaultGraph.(*generalGraph) - - g.ShmSize = shmSize -} - -func GPU(numGPUs int) { - g := DefaultGraph.(*generalGraph) - - g.NumGPUs = numGPUs -} - -func CUDA(version, cudnn string) { - g := DefaultGraph.(*generalGraph) - - g.CUDA = &version - if len(cudnn) > 0 { - g.CUDNN = cudnn - } -} - -func VSCodePlugins(plugins []string) error { - g := DefaultGraph.(*generalGraph) - - for _, p := range plugins { - plugin, err := vscode.ParsePlugin(p) - if err != nil { - return err - } - g.VSCodePlugins = append(g.VSCodePlugins, *plugin) - } - return nil -} - -// UbuntuAPT updates the Ubuntu apt source.list in the image. -func UbuntuAPT(source string) error { - if source == "" { - return errors.New("source is required") - } - g := DefaultGraph.(*generalGraph) - - g.UbuntuAPTSource = &source - return nil -} - -func PyPIIndex(url, extraURL string, trust bool) error { - if url == "" { - return errors.New("url is required") - } - g := DefaultGraph.(*generalGraph) - - g.PyPIIndexURL = &url - g.PyPIExtraIndexURL = &extraURL - g.PyPITrust = trust - return nil -} - -func CRANMirror(url string) error { - g := DefaultGraph.(*generalGraph) - - g.CRANMirrorURL = &url - return nil -} - -func JuliaPackageServer(url string) error { - g := DefaultGraph.(*generalGraph) - - g.JuliaPackageServer = &url - return nil -} - -func Shell(shell string) error { - g := DefaultGraph.(*generalGraph) - - g.Shell = shell - return nil -} - -func Jupyter(pwd string, port int64) error { - g := DefaultGraph.(*generalGraph) - - g.JupyterConfig = &ir.JupyterConfig{ - Token: pwd, - Port: port, - } - return nil -} - -func RStudioServer() error { - g := DefaultGraph.(*generalGraph) - - g.RStudioServerConfig = &ir.RStudioServerConfig{} - return nil -} - -func Run(commands []string, mount bool) error { - g := DefaultGraph.(*generalGraph) - - g.Exec = append(g.Exec, ir.RunBuildCommand{ - Commands: commands, - MountHost: mount, - }) - return nil -} - -func Git(name, email, editor string) error { - g := DefaultGraph.(*generalGraph) - - g.GitConfig = &ir.GitConfig{ - Name: name, - Email: email, - Editor: editor, - } - return nil -} - -func CondaChannel(channel string, useMamba bool) error { - g := DefaultGraph.(*generalGraph) - - g.CondaConfig.CondaChannel = &channel - g.CondaConfig.UseMicroMamba = useMamba - return nil -} - -func CondaPackage(deps []string, channel []string, envFile string) error { - g := DefaultGraph.(*generalGraph) - - g.CondaConfig.CondaPackages = append( - g.CondaConfig.CondaPackages, deps...) - - g.CondaConfig.CondaEnvFileName = envFile - - if len(channel) != 0 { - g.CondaConfig.AdditionalChannels = append( - g.CondaConfig.AdditionalChannels, channel...) - } - return nil -} - -func Copy(src, dest string) { - g := DefaultGraph.(*generalGraph) - - g.Copy = append(g.Copy, ir.CopyInfo{ - Source: src, - Destination: dest, - }) -} - -func Mount(src, dest string) { - g := DefaultGraph.(*generalGraph) - - g.Mount = append(g.Mount, ir.MountInfo{ - Source: src, - Destination: dest, - }) -} - -func HTTP(url, checksum, filename string) error { - info := ir.HTTPInfo{ - URL: url, - Filename: filename, - } - if len(checksum) > 0 { - d, err := digest.Parse(checksum) - if err != nil { - return err - } - info.Checksum = d - } - g := DefaultGraph.(*generalGraph) - - g.HTTP = append(g.HTTP, info) - return nil -} - -func Entrypoint(args []string) { - g := DefaultGraph.(*generalGraph) - - g.Entrypoint = append(g.Entrypoint, args...) -} - -func RuntimeCommands(commands map[string]string) { - g := DefaultGraph.(*generalGraph) - - for k, v := range commands { - g.RuntimeCommands[k] = v - } -} - -func RuntimeDaemon(commands [][]string) { - g := DefaultGraph.(*generalGraph) - - g.RuntimeDaemon = append(g.RuntimeDaemon, commands...) -} - -func RuntimeExpose(envdPort, hostPort int, serviceName string, listeningAddr string) error { - g := DefaultGraph.(*generalGraph) - - g.RuntimeExpose = append(g.RuntimeExpose, ir.ExposeItem{ - EnvdPort: envdPort, - HostPort: hostPort, - ServiceName: serviceName, - ListeningAddr: listeningAddr, - }) - return nil -} - -func RuntimeEnviron(env map[string]string, path []string) { - g := DefaultGraph.(*generalGraph) - - for k, v := range env { - g.RuntimeEnviron[k] = v - } - g.RuntimeEnvPaths = append(g.RuntimeEnvPaths, path...) -} - -func RuntimeInitScript(commands []string) { - g := DefaultGraph.(*generalGraph) - - g.RuntimeInitScript = append(g.RuntimeInitScript, commands) -} - -func Repo(url, description string) { - g := DefaultGraph.(*generalGraph) - - g.Repo = types.RepoInfo{ - Description: description, - URL: url, - } -} diff --git a/pkg/lang/ir/v0/julia.go b/pkg/lang/ir/v0/julia.go deleted file mode 100644 index 71381e061..000000000 --- a/pkg/lang/ir/v0/julia.go +++ /dev/null @@ -1,104 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - "github.com/sirupsen/logrus" - - "github.com/tensorchord/envd/pkg/types" -) - -func (g *generalGraph) compileJulia(baseStage llb.State) (llb.State, error) { - baseStage = g.updateEnvPath(baseStage, types.DefaultJuliaPath) - if err := g.compileJupyter(); err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile jupyter") - } - - aptStage := g.compileUbuntuAPT(baseStage) - builtinSystemStage := aptStage - - sshStage, err := g.copySSHKey(builtinSystemStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to copy ssh keys") - } - diffSSHStage := llb.Diff(builtinSystemStage, sshStage, llb.WithCustomName("install ssh keys")) - - shellStage, err := g.compileShell(builtinSystemStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile shell") - } - diffShellStage := llb.Diff(builtinSystemStage, shellStage, llb.WithCustomName("install shell")) - - systemStage := llb.Diff(builtinSystemStage, g.compileSystemPackages(builtinSystemStage), - llb.WithCustomName("install system packages")) - - juliaStage := llb.Diff(builtinSystemStage, - g.installJuliaPackages(builtinSystemStage), llb.WithCustomName("install julia packages")) - - vscodeStage, err := g.compileVSCode() - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get vscode plugins") - } - - var merged llb.State - if vscodeStage != nil { - merged = llb.Merge([]llb.State{ - builtinSystemStage, systemStage, diffShellStage, - diffSSHStage, juliaStage, *vscodeStage, - }, llb.WithCustomName("[internal] generating the image")) - } else { - merged = llb.Merge([]llb.State{ - builtinSystemStage, systemStage, diffShellStage, - diffSSHStage, juliaStage, - }, llb.WithCustomName("[internal] generating the image")) - } - return merged, nil -} - -func (g generalGraph) installJuliaPackages(root llb.State) llb.State { - if len(g.JuliaPackages) == 0 { - return root - } - - var sb strings.Builder - - sb.WriteString(`/usr/local/julia/bin/julia -e 'using Pkg; Pkg.add([`) - for i, pkg := range g.JuliaPackages { - sb.WriteString(fmt.Sprintf(`"%s"`, pkg)) - if i != len(g.JuliaPackages)-1 { - sb.WriteString(", ") - } - } - - sb.WriteString(`])'`) - - // TODO(gaocegege): Support cache. - cmd := sb.String() - logrus.Debug("install julia packages: ", cmd) - root = llb.User("envd")(root) - if g.JuliaPackageServer != nil { - root = root.AddEnv("JULIA_PKG_SERVER", *g.JuliaPackageServer) - } - root = root.AddEnv("PATH", "/usr/local/julia/bin") - run := root. - Run(llb.Shlex(cmd), llb.WithCustomNamef("install julia packages")) - - return run.Root() -} diff --git a/pkg/lang/ir/v0/python.go b/pkg/lang/ir/v0/python.go deleted file mode 100644 index 36ce2dc04..000000000 --- a/pkg/lang/ir/v0/python.go +++ /dev/null @@ -1,220 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - "net/url" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - "github.com/sirupsen/logrus" - - "github.com/tensorchord/envd/pkg/flag" -) - -const ( - pythonVersionDefault = "3.11" -) - -func (g generalGraph) getAppropriatePythonVersion() (string, error) { - if g.Language.Version == nil { - return pythonVersionDefault, nil - } - - version := *g.Language.Version - if version == "3" || version == "" { - return pythonVersionDefault, nil - } - if strings.HasPrefix(version, "3.") { - return version, nil - } - return "", errors.Errorf("python version %s is not supported", version) -} - -func (g generalGraph) compilePython(baseStage llb.State) (llb.State, error) { - if err := g.compileJupyter(); err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile jupyter") - } - aptStage := g.compileUbuntuAPT(baseStage) - systemStage := g.compileSystemPackages(aptStage) - - condaEnvStage, err := g.compileCondaEnvironment(baseStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile conda environment") - } - - // Conda affects shell and python, thus we cannot do it in parallel. - shellStage, err := g.compileShell(baseStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile shell") - } - - diffCondaEnvStage := llb.Diff(baseStage, condaEnvStage, - llb.WithCustomName("[internal] conda python environment")) - diffSystemStage := llb.Diff(baseStage, systemStage, - llb.WithCustomName("[internal] install system packages")) - diffShellStage := llb.Diff(baseStage, shellStage, - llb.WithCustomNamef("[internal] configure shell %s", g.Shell)) - prePythonStage := llb.Merge([]llb.State{ - diffSystemStage, - diffCondaEnvStage, - diffShellStage, - baseStage}, llb.WithCustomName("pre-python stage")) - - condaChannelStage := g.compileCondaChannel(prePythonStage) - - condaStage := llb.Diff(prePythonStage, - g.compileCondaPackages(condaChannelStage), - llb.WithCustomName("[internal] install conda packages")) - - pypiMirrorStage := g.compilePyPIIndex(prePythonStage) - - pypiStage := llb.Diff(prePythonStage, - g.compilePyPIPackages(pypiMirrorStage), - llb.WithCustomName("[internal] install PyPI packages")) - - vscodeStage, err := g.compileVSCode() - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get vscode plugins") - } - sshStage, err := g.copySSHKey(prePythonStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to copy ssh keys") - } - diffSSHStage := llb.Diff(prePythonStage, sshStage, - llb.WithCustomName("[internal] install ssh key")) - - var merged llb.State - if vscodeStage != nil { - merged = llb.Merge([]llb.State{ - prePythonStage, condaStage, pypiStage, - diffSSHStage, *vscodeStage, - }, llb.WithCustomName("[internal] generating the image")) - } else { - merged = llb.Merge([]llb.State{ - prePythonStage, condaStage, - diffSSHStage, pypiStage, - }, llb.WithCustomName("[internal] generating the image")) - } - merged = g.compileAlternative(merged) - condaShell := g.compileCondaShell(merged) - return condaShell, nil -} - -// Set the system default python to envd's python. -func (g generalGraph) compileAlternative(root llb.State) llb.State { - envdPrefix := "/opt/conda/envs/envd/bin" - run := root. - Run(llb.Shlexf("update-alternatives --install /usr/bin/python python %s/python 1", envdPrefix), - llb.WithCustomName("[internal] update alternative python to envd")). - Run(llb.Shlexf("update-alternatives --install /usr/bin/python3 python3 %s/python3 1", envdPrefix), - llb.WithCustomName("[internal] update alternative python3 to envd")). - Run(llb.Shlexf("update-alternatives --install /usr/bin/pip pip %s/pip 1", envdPrefix), - llb.WithCustomName("[internal] update alternative pip to envd")). - Run(llb.Shlexf("update-alternatives --install /usr/bin/pip3 pip3 %s/pip3 1", envdPrefix), - llb.WithCustomName("[internal] update alternative pip3 to envd")) - return run.Root() -} - -func (g generalGraph) compilePyPIPackages(root llb.State) llb.State { - if len(g.PyPIPackages) == 0 && g.RequirementsFile == nil && len(g.PythonWheels) == 0 { - return root - } - - // Create the envd cache directory in the container. see issue #582 - cacheDir := filepath.Join("/", "root", ".cache", "pip") - root = g.CompileCacheDir(root, cacheDir) - - cache := llb.Scratch().File(llb.Mkdir("/cache/pip", 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] setting pip cache mount permissions")) - - if len(g.PyPIPackages) != 0 { - for _, packages := range g.PyPIPackages { - cmd := fmt.Sprintf("/opt/conda/envs/envd/bin/python -m pip install %s", strings.Join(packages, " ")) - logrus.WithField("command", cmd).Debug("Configure pip install statements") - run := root. - Run(llb.Shlex(cmd), llb.WithCustomNamef("pip install %s", strings.Join(packages, " "))) - // Refer to https://github.com/moby/buildkit/blob/31054718bf775bf32d1376fe1f3611985f837584/frontend/dockerfile/dockerfile2llb/convert_runmount.go#L46 - run.AddMount(cacheDir, cache, - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache/pip")) - root = run.Root() - } - } - - if g.RequirementsFile != nil { - logrus.WithField("file", *g.RequirementsFile). - Debug("Configure pip install requirements statements") - root = root.Dir(g.getWorkingDir()) - run := root. - Run(llb.Shlexf("/opt/conda/envs/envd/bin/python -m pip install -r %s", *g.RequirementsFile), - llb.WithCustomNamef("pip install -r %s", *g.RequirementsFile)) - run.AddMount(cacheDir, cache, - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache/pip")) - run.AddMount(g.getWorkingDir(), - llb.Local(flag.FlagBuildContext)) - root = run.Root() - } - - if len(g.PythonWheels) > 0 { - root = root.Dir(g.getWorkingDir()) - cmdTemplate := "/opt/conda/envs/envd/bin/python -m pip install %s" - for _, wheel := range g.PythonWheels { - run := root.Run(llb.Shlexf(cmdTemplate, wheel), llb.WithCustomNamef("pip install %s", wheel)) - run.AddMount(g.getWorkingDir(), llb.Local(flag.FlagBuildContext), llb.Readonly) - run.AddMount(cacheDir, cache, - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared), llb.SourcePath("/cache/pip")) - root = run.Root() - } - } - return root -} - -func (g generalGraph) compilePyPIIndex(root llb.State) llb.State { - if g.PyPIIndexURL != nil { - logrus.WithField("index", *g.PyPIIndexURL).Debug("using custom PyPI index") - var extra string - if g.PyPIExtraIndexURL != nil { - logrus.WithField("index", *g.PyPIIndexURL).Debug("using extra PyPI index") - extra = "extra-index-url=" + *g.PyPIExtraIndexURL - } - if g.PyPITrust { - var hosts []string - for _, p := range []*string{g.PyPIIndexURL, g.PyPIExtraIndexURL} { - if p != nil { - u, err := url.Parse(*p) - if err == nil && u != nil && u.Hostname() != "" { - hosts = append(hosts, u.Hostname()) - } - } - } - if len(hosts) > 0 { - extra += "\ntrusted-host=" + strings.Join(hosts, " ") - } - } - content := fmt.Sprintf(pypiConfigTemplate, *g.PyPIIndexURL, extra) - dir := filepath.Dir(pypiIndexFilePath) - pypiMirror := root. - File(llb.Mkdir(dir, 0755, llb.WithParents(true), llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomNamef("[internal] setting PyPI index dir %s", dir)). - File(llb.Mkfile(pypiIndexFilePath, - 0644, []byte(content), llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomNamef("[internal] setting PyPI index file %s", pypiIndexFilePath)) - return pypiMirror - } - return root -} diff --git a/pkg/lang/ir/v0/r.go b/pkg/lang/ir/v0/r.go deleted file mode 100644 index d8da7560a..000000000 --- a/pkg/lang/ir/v0/r.go +++ /dev/null @@ -1,96 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" -) - -func (g generalGraph) compileRLang(baseStage llb.State) (llb.State, error) { - if err := g.compileJupyter(); err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile jupyter") - } - aptStage := g.compileUbuntuAPT(baseStage) - builtinSystemStage := aptStage - - sshStage, err := g.copySSHKey(builtinSystemStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to copy ssh keys") - } - diffSSHStage := llb.Diff(builtinSystemStage, sshStage, llb.WithCustomName("install ssh keys")) - - // Conda affects shell and python, thus we cannot do it in parallel. - shellStage, err := g.compileShell(builtinSystemStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to compile shell") - } - diffShellStage := llb.Diff(builtinSystemStage, shellStage, llb.WithCustomName("install shell")) - - systemStage := llb.Diff(builtinSystemStage, g.compileSystemPackages(builtinSystemStage), - llb.WithCustomName("install system packages")) - - // TODO(terrytangyuan): Support RStudio local server - rPackageInstallStage := llb.Diff(builtinSystemStage, - g.installRPackages(builtinSystemStage), llb.WithCustomName("install R packages")) - - vscodeStage, err := g.compileVSCode() - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get vscode plugins") - } - - var merged llb.State - if vscodeStage != nil { - merged = llb.Merge([]llb.State{ - builtinSystemStage, systemStage, diffShellStage, - diffSSHStage, rPackageInstallStage, *vscodeStage, - }, llb.WithCustomName("[internal] generating the image")) - } else { - merged = llb.Merge([]llb.State{ - builtinSystemStage, systemStage, diffShellStage, - diffSSHStage, rPackageInstallStage, - }, llb.WithCustomName("[internal] generating the image")) - } - return merged, nil -} - -func (g generalGraph) installRPackages(root llb.State) llb.State { - if len(g.RPackages) == 0 { - return root - } - // TODO(terrytangyuan): Support different CRAN mirrors - var sb strings.Builder - mirrorURL := "https://cran.rstudio.com" - if g.CRANMirrorURL != nil { - mirrorURL = *g.CRANMirrorURL - } - sb.WriteString(fmt.Sprintf(`R -e 'options(repos = c(CRAN = "%s")); install.packages(c(`, mirrorURL)) - for i, pkg := range g.RPackages { - sb.WriteString(fmt.Sprintf(`"%s"`, pkg)) - if i != len(g.RPackages)-1 { - sb.WriteString(", ") - } - } - sb.WriteString(`))'`) - - // TODO(terrytangyuan): Support cache. - cmd := sb.String() - root = llb.User("envd")(root) - run := root.Run(llb.Shlex(cmd), llb.WithCustomNamef("install R packages")) - return run.Root() -} diff --git a/pkg/lang/ir/v0/shell.go b/pkg/lang/ir/v0/shell.go deleted file mode 100644 index 93f90c72d..000000000 --- a/pkg/lang/ir/v0/shell.go +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - - "github.com/tensorchord/envd/pkg/flag" - "github.com/tensorchord/envd/pkg/progress/compileui" - "github.com/tensorchord/envd/pkg/shell" - "github.com/tensorchord/envd/pkg/util/fileutil" -) - -const ( - starshipConfig = ` -[container] -format = "[$symbol \\[envd\\]]($style)" - -[sudo] -disabled = false -symbol = "sudo " - -[python] -symbol = "Py " - -[status] -format = '[\[$status:$common_meaning$signal_name\]]($style) ' -disabled = false - -[git_branch] -symbol = "git " - -[git_commit] -tag_symbol = " tag " - -[git_status] -ahead = ">" -behind = "<" -diverged = "<>" -renamed = "r" -deleted = "x" -` -) - -func (g *generalGraph) compileShell(root llb.State) (llb.State, error) { - if g.Shell == shellZSH { - g.RuntimeEnviron["SHELL"] = "/usr/bin/zsh" - return g.compileZSH(root) - } - g.RuntimeEnviron["SHELL"] = "/usr/bin/bash" - return root, nil -} - -func (g *generalGraph) compileCondaShell(root llb.State) llb.State { - rcPath := fileutil.EnvdHomeDir(".bashrc") - if g.Shell == shellZSH { - rcPath = fileutil.EnvdHomeDir(".zshrc") - } - run := root. - Run(llb.Shlexf("bash -c \"%s\"", g.condaInitShell(g.Shell)), - llb.WithCustomNamef("[internal] init conda %s env", g.Shell)). - Run(llb.Shlexf(`bash -c 'echo "source %s/activate envd" >> %s'`, condaBinDir, rcPath), - llb.WithCustomNamef("[internal] add conda environment to %s", rcPath)) - return run.Root() -} - -func (g *generalGraph) compilePrompt(root llb.State) llb.State { - // skip this for customized image - if g.Image != nil { - return root - } - // starship config - config := root. - File(llb.Mkdir(defaultConfigDir, 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] creating config dir")). - File(llb.Mkfile(starshipConfigPath, 0644, []byte(starshipConfig), llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomName("[internal] setting prompt starship config")) - - run := config.Run(llb.Shlexf(`bash -c 'echo "eval \"\$(starship init bash)\"" >> %s'`, fileutil.EnvdHomeDir(".bashrc")), - llb.WithCustomName("[internal] setting prompt bash config")).Root() - - if g.Shell == shellZSH { - run = run.Run( - llb.Shlexf(`bash -c 'echo "eval \"\$(starship init zsh)\"" >> %s'`, fileutil.EnvdHomeDir(".zshrc")), - llb.WithCustomName("[internal] setting prompt zsh config")).Root() - } - return run -} - -func (g generalGraph) compileZSH(root llb.State) (llb.State, error) { - installPath := fileutil.EnvdHomeDir("install.sh") - zshrcPath := fileutil.EnvdHomeDir(".zshrc") - ohMyZSHPath := fileutil.EnvdHomeDir(".oh-my-zsh") - m := shell.NewManager() - g.Writer.LogZSH(compileui.ActionStart, false) - cached, err := m.DownloadOrCache() - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to download oh-my-zsh") - } - g.Writer.LogZSH(compileui.ActionEnd, cached) - zshStage := root. - File(llb.Copy(llb.Local(flag.FlagCacheDir), "oh-my-zsh", ohMyZSHPath, - &llb.CopyInfo{CreateDestPath: true}, llb.WithUIDGID(g.uid, g.gid))). - File(llb.Mkfile(installPath, - 0644, []byte(m.InstallScript()), llb.WithUIDGID(g.uid, g.gid))) - zshrc := zshStage.Run(llb.Shlexf("bash %s", installPath), - llb.WithCustomName("[internal] install oh-my-zsh")). - File(llb.Mkfile(zshrcPath, - 0644, []byte(m.ZSHRC()), llb.WithUIDGID(g.uid, g.gid))) - return zshrc, nil -} diff --git a/pkg/lang/ir/v0/supervisor.go b/pkg/lang/ir/v0/supervisor.go deleted file mode 100644 index 8910ff415..000000000 --- a/pkg/lang/ir/v0/supervisor.go +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "fmt" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - - "github.com/tensorchord/envd/pkg/config" - "github.com/tensorchord/envd/pkg/types" -) - -const ( - horustTemplate = ` -name = "%[1]s" -command = """ -%[2]s -""" -stdout = "/var/log/horust/%[1]s_stdout.log" -stderr = "/var/log/horust/%[1]s_stderr.log" -user = "${USER}" -working-directory = "${%[3]s}" -%[4]s - -[environment] -keep-env = true - -[restart] -strategy = "on-failure" -backoff = "1s" -attempts = 2 - -[termination] -wait = "5s" -` -) - -func (g generalGraph) installHorust(root llb.State) llb.State { - horust := root. - File(llb.Copy(llb.Image(types.HorustImage), "/", "/usr/local/bin"), - llb.WithCustomName("[internal] install horust")). - File(llb.Mkdir(types.HorustServiceDir, 0755, llb.WithParents(true)), - llb.WithCustomNamef("[internal] mkdir for horust service: %s", types.HorustServiceDir)). - File(llb.Mkdir(types.HorustLogDir, 0777, llb.WithParents(true)), - llb.WithCustomNamef("[internal] mkdir for horust log: %s", types.HorustLogDir)). - Run(llb.Shlexf(`sudo chmod 777 %s`, types.HorustLogDir), - llb.WithCustomName("[internal] change directory permission for logging")) - - return horust.Root() -} - -func (g generalGraph) addNewProcess(root llb.State, name, command string, depends []string) llb.State { - var sb strings.Builder - if len(depends) != 0 { - sb.WriteString("start-after = [") - for _, d := range depends { - sb.WriteString("\"") - sb.WriteString(d) - sb.WriteString("\",") - } - sb.WriteString("]\n") - } - template := fmt.Sprintf(horustTemplate, name, command, types.EnvdWorkDir, sb.String()) - - filename := filepath.Join(types.HorustServiceDir, fmt.Sprintf("%s.toml", name)) - supervisor := root.File(llb.Mkfile(filename, 0644, []byte(template), llb.WithUIDGID(g.uid, g.gid)), llb.WithCustomNamef("[internal] create file %s", filename)) - return supervisor -} - -func (g generalGraph) compileEntrypoint(root llb.State) (llb.State, error) { - if g.Image != nil { - return root, nil - } - if len(g.Entrypoint) > 0 { - return root, errors.New("`config.entrypoint` is only for custom image, maybe you need `runtime.init`") - } - cmd := fmt.Sprintf("/var/envd/bin/envd-sshd --port %d --shell %s", config.SSHPortInContainer, g.Shell) - entrypoint := g.addNewProcess(root, "sshd", cmd, nil) - var deps []string - if g.RuntimeInitScript != nil { - for i, command := range g.RuntimeInitScript { - entrypoint = g.addNewProcess(entrypoint, fmt.Sprintf("init_%d", i), fmt.Sprintf("/bin/bash -c 'set -euo pipefail\n%s'", strings.Join(command, "\n")), nil) - deps = append(deps, fmt.Sprintf("init_%d", i)) - } - } - - if g.RuntimeDaemon != nil { - for i, command := range g.RuntimeDaemon { - entrypoint = g.addNewProcess(entrypoint, fmt.Sprintf("daemon_%d", i), strings.Join(command, " "), deps) - } - } - - if g.JupyterConfig != nil { - jupyterCmd := g.generateJupyterCommand("") - entrypoint = g.addNewProcess(entrypoint, "jupyter", strings.Join(jupyterCmd, " "), deps) - } - - if g.RStudioServerConfig != nil { - rstudioCmd := g.generateRStudioCommand("") - entrypoint = g.addNewProcess(entrypoint, "rstudio", strings.Join(rstudioCmd, " "), deps) - } - - return entrypoint, nil -} diff --git a/pkg/lang/ir/v0/system.go b/pkg/lang/ir/v0/system.go deleted file mode 100644 index 7bbdbafe6..000000000 --- a/pkg/lang/ir/v0/system.go +++ /dev/null @@ -1,307 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "context" - _ "embed" - "fmt" - "os" - "path/filepath" - "strings" - - "github.com/cockroachdb/errors" - "github.com/moby/buildkit/client/llb" - "github.com/moby/buildkit/client/llb/imagemetaresolver" - "github.com/sirupsen/logrus" - "github.com/spf13/viper" - - "github.com/tensorchord/envd/pkg/config" - "github.com/tensorchord/envd/pkg/flag" - "github.com/tensorchord/envd/pkg/types" - "github.com/tensorchord/envd/pkg/util/fileutil" - "github.com/tensorchord/envd/pkg/version" -) - -func (g generalGraph) compileUbuntuAPT(root llb.State) llb.State { - if g.UbuntuAPTSource != nil { - logrus.WithField("source", *g.UbuntuAPTSource).Debug("using custom APT source") - aptSource := root. - File(llb.Mkdir(filepath.Dir(aptSourceFilePath), 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] setting apt source")). - File(llb.Mkfile(aptSourceFilePath, 0644, []byte(*g.UbuntuAPTSource)), - llb.WithCustomName("[internal] setting apt source")) - return aptSource - } - return root -} - -func (g generalGraph) compileRun(root llb.State) llb.State { - if len(g.Exec) == 0 { - return root - } - - workingDir := g.getWorkingDir() - for _, execGroup := range g.Exec { - var sb strings.Builder - sb.WriteString("set -euo pipefail\n") - for _, c := range execGroup.Commands { - sb.WriteString(c + "\n") - } - - cmdStr := fmt.Sprintf("/usr/bin/bash -c '%s'", sb.String()) - logrus.WithField("command", cmdStr).Debug("compile run command") - // Mount the build context into the build process. - // TODO(gaocegege): Maybe we should make it readonly, - // but these cases then cannot be supported: - // run(commands=["git clone xx.git"]) - run := root.Dir(workingDir).Run(llb.Shlex(cmdStr)) - if execGroup.MountHost { - run.AddMount(workingDir, llb.Local(flag.FlagBuildContext)) - } - root = run.Root() - } - return root -} - -func (g generalGraph) compileCopy(root llb.State) llb.State { - if len(g.Copy) == 0 { - return root - } - - result := root - // Compose the copy command. - for _, c := range g.Copy { - result = result.File(llb.Copy( - llb.Local(flag.FlagBuildContext), c.Source, c.Destination, - &llb.CopyInfo{CreateDestPath: true}, - llb.WithUIDGID(g.uid, g.gid))) - } - return result -} - -func (g *generalGraph) compileCUDAPackages(org string) llb.State { - return g.preparePythonBase(llb.Image(fmt.Sprintf( - "docker.io/%s:%s-cudnn%s-devel-%s", - org, *g.CUDA, g.CUDNN, g.OS))) -} - -func (g generalGraph) compileSystemPackages(root llb.State) llb.State { - if len(g.SystemPackages) == 0 { - logrus.Debug("skip the apt since system package is not specified") - return root - } - - // Compose the package install command. - var sb strings.Builder - sb.WriteString("sudo apt-get update && sudo apt-get install -y --no-install-recommends") - - for _, pkg := range g.SystemPackages { - sb.WriteString(fmt.Sprintf(" %s", pkg)) - } - - cacheDir := "/var/cache/apt" - cacheLibDir := "/var/lib/apt" - - run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), - llb.WithCustomNamef("apt-get install %s", - strings.Join(g.SystemPackages, " "))) - run.AddMount(cacheDir, llb.Scratch(), - llb.AsPersistentCacheDir(g.CacheID(cacheDir), llb.CacheMountShared)) - run.AddMount(cacheLibDir, llb.Scratch(), - llb.AsPersistentCacheDir(g.CacheID(cacheLibDir), llb.CacheMountShared)) - return run.Root() -} - -// nolint:unparam -func (g *generalGraph) compileExtraSource(root llb.State) (llb.State, error) { - if len(g.HTTP) == 0 { - return root, nil - } - inputs := []llb.State{} - for _, httpInfo := range g.HTTP { - src := llb.HTTP( - httpInfo.URL, - llb.Checksum(httpInfo.Checksum), - llb.Filename(httpInfo.Filename), - llb.Chown(g.uid, g.gid), - ) - inputs = append(inputs, llb.Scratch().File( - llb.Copy(src, "/", g.getExtraSourceDir(), &llb.CopyInfo{CreateDestPath: true}), - )) - } - inputs = append(inputs, root) - return llb.Merge(inputs, llb.WithCustomName("[internal] build source layers")), nil -} - -func (g *generalGraph) preparePythonBase(root llb.State) llb.State { - for _, env := range types.BaseEnvironment { - root = root.AddEnv(env.Name, env.Value) - } - for k, v := range g.RuntimeEnviron { - root = root.AddEnv(k, v) - } - - // apt packages - var sb strings.Builder - sb.WriteString("apt-get update && apt-get install -y apt-utils && ") - sb.WriteString("apt-get install -y --no-install-recommends --no-install-suggests --fix-missing ") - sb.WriteString(strings.Join(types.BaseAptPackage, " ")) - sb.WriteString("&& rm -rf /var/lib/apt/lists/* ") - // shell prompt - sb.WriteString("&& locale-gen en_US.UTF-8") - - run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), - llb.WithCustomName("[internal] install built-in packages")) - - return run.Root() -} - -func (g generalGraph) compileSSHD(root llb.State) llb.State { - sshd := root.File(llb.Copy( - llb.Image(types.EnvdSshdImage), "/usr/bin/envd-sshd", "/var/envd/bin/envd-sshd", - &llb.CopyInfo{CreateDestPath: true}), - llb.WithCustomName(fmt.Sprintf("[internal] add envd-sshd from %s", types.EnvdSshdImage))) - return sshd -} - -func (g generalGraph) compileStarship(root llb.State) llb.State { - starship := root.File(llb.Copy( - llb.Image(types.EnvdStarshipImage), "/usr/local/bin/starship", "/usr/local/bin/starship", - &llb.CopyInfo{CreateDestPath: true}), - llb.WithCustomName(fmt.Sprintf("[internal] add envd-starship from %s", types.EnvdStarshipImage))) - return starship -} - -func (g *generalGraph) compileBase() (llb.State, error) { - logger := logrus.WithFields(logrus.Fields{ - "os": g.OS, - "language": g.Language.Name, - }) - if g.Language.Version != nil { - logger = logger.WithField("version", *g.Language.Version) - } - logger.Debug("compile base image") - - var base llb.State - org := viper.GetString(flag.FlagDockerOrganization) - v := version.GetVersionForImageTag() - // Do not update user permission in the base image. - if g.Image != nil { - return g.customBase() - } else if g.CUDA == nil { - switch g.Language.Name { - case "r": - base = llb.Image(fmt.Sprintf("docker.io/%s/r-base:4.2-envd-%s", org, v)) - // r-base image already has GID 1000. - // It is a trick, we actually use GID 1000 - if g.gid == 1000 { - g.gid = 1001 - } - if g.uid == 1000 { - g.uid = 1001 - } - case "python": - // TODO(keming) use user input `base(os="")` - base = g.preparePythonBase(llb.Image(types.PythonBaseImage)) - case "julia": - base = llb.Image(fmt.Sprintf( - "docker.io/%s/julia:1.8rc1-ubuntu22.04-envd-%s", org, v)) - } - } else { - base = g.compileCUDAPackages("nvidia/cuda") - } - - g.WorkingDir = g.getWorkingDir() - - // Install conda first. - condaStage := g.installConda(base) - supervisor := g.installHorust(condaStage) - sshdStage := g.compileSSHD(supervisor) - starshipStage := g.compileStarship(sshdStage) - source, err := g.compileExtraSource(starshipStage) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get extra sources") - } - final := g.compileUserGroup(source) - return final, nil -} - -// customBase get the image and the set the image metadata to graph. -func (g *generalGraph) customBase() (llb.State, error) { - if g.Image == nil { - return llb.State{}, fmt.Errorf("failed to get the image") - } - logrus.WithField("image", *g.Image).Debugf("using custom base image") - - // Fix https://github.com/tensorchord/envd/issues/1147. - // Fetch the image metadata from base image. - base := llb.Image(*g.Image, - llb.WithMetaResolver(imagemetaresolver.Default())) - envs, err := base.Env(context.Background()) - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get the image metadata") - } - - // Set the environment variables to RuntimeEnviron to keep it in the resulting image. - for _, key := range envs.Keys() { - // in case the env value also contains `=` - value, ok := envs.Get(key) - if ok { - g.RuntimeEnviron[key] = value - } - } - return base, nil -} - -func (g generalGraph) copySSHKey(root llb.State) (llb.State, error) { - public := g.PublicKeyPath - bdat, err := os.ReadFile(public) - dat := strings.TrimSuffix(string(bdat), "\n") - if err != nil { - return llb.State{}, errors.Wrap(err, "Cannot read public SSH key") - } - run := root. - File(llb.Mkdir("/var/envd", 0755, llb.WithParents(true), - llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomName("[internal] create dir for ssh key")). - File(llb.Mkfile(config.ContainerAuthorizedKeysPath, - 0644, []byte(dat+" envd"), llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomName("[internal] install ssh keys")) - return run, nil -} - -func (g generalGraph) compileMountDir(root llb.State) llb.State { - mount := root - if g.Image == nil { - // create the ENVD_WORKDIR as a placeholder (envd-server may not mount this dir) - workDir := fileutil.EnvdHomeDir(g.EnvironmentName) - mount = root.File(llb.Mkdir(workDir, 0755, llb.WithParents(true), llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomNamef("[internal] create work dir: %s", workDir)) - } - - for _, m := range g.Mount { - mount = mount.File(llb.Mkdir(m.Destination, 0755, llb.WithParents(true), - llb.WithUIDGID(g.uid, g.gid)), - llb.WithCustomNamef("[internal] create dir for runtime.mount %s", m.Destination), - ) - } - return mount -} - -func (g *generalGraph) updateEnvPath(root llb.State, path string) llb.State { - g.RuntimeEnvPaths = append(g.RuntimeEnvPaths, path) - return root.AddEnv("PATH", strings.Join(g.RuntimeEnvPaths, ":")) -} diff --git a/pkg/lang/ir/v0/types.go b/pkg/lang/ir/v0/types.go deleted file mode 100644 index bc9a06fd7..000000000 --- a/pkg/lang/ir/v0/types.go +++ /dev/null @@ -1,95 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - ocispecs "github.com/opencontainers/image-spec/specs-go/v1" - - "github.com/tensorchord/envd/pkg/editor/vscode" - "github.com/tensorchord/envd/pkg/lang/ir" - "github.com/tensorchord/envd/pkg/progress/compileui" - "github.com/tensorchord/envd/pkg/types" -) - -// A Graph contains the state, -// such as its call stack and thread-local storage. -// TODO(gaocegeg): Refactor it to support order. -type generalGraph struct { - uid int - gid int - - OS string - ir.Language - EnvdSyntaxVersion string - Image *string - - Shell string - CUDA *string - CUDNN string - NumGPUs int - ShmSize int - - UbuntuAPTSource *string - CRANMirrorURL *string - JuliaPackageServer *string - PyPIIndexURL *string - PyPIExtraIndexURL *string - PyPITrust bool - - PublicKeyPath string - - PyPIPackages [][]string - RequirementsFile *string - PythonWheels []string - RPackages []string - JuliaPackages []string - SystemPackages []string - - VSCodePlugins []vscode.Plugin - UserDirectories []string - - Exec []ir.RunBuildCommand - Copy []ir.CopyInfo - Mount []ir.MountInfo - HTTP []ir.HTTPInfo - Entrypoint []string - - Repo types.RepoInfo - - *ir.JupyterConfig - *ir.GitConfig - *ir.CondaConfig - *ir.RStudioServerConfig - - Writer compileui.Writer `json:"-"` - // EnvironmentName is the base name of the environment. - // It is the BaseDir(BuildContextDir) - // e.g. mnist, streamlit-mnist - EnvironmentName string - // EnvironmentPath is the full path of this environment. - EnvironmentPath string - // WorkingDir is the working directory of this environment. - // This only affect the `WorkingDir` in the image config. - WorkingDir string - - ir.RuntimeGraph - - Platform *ocispecs.Platform -} - -const ( - shellBASH = "bash" - shellZSH = "zsh" -) diff --git a/pkg/lang/ir/v0/user.go b/pkg/lang/ir/v0/user.go deleted file mode 100644 index fca651161..000000000 --- a/pkg/lang/ir/v0/user.go +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "strings" - - "github.com/moby/buildkit/client/llb" - - "github.com/tensorchord/envd/pkg/types" -) - -// compileUserOwn chown related directories -func (g *generalGraph) compileUserOwn(root llb.State) llb.State { - if g.Image != nil || g.uid == 0 { - g.RuntimeEnviron["USER"] = "root" - return root - } - g.RuntimeEnviron["USER"] = "envd" - for _, dir := range g.UserDirectories { - root = root.Run(llb.Shlexf("chown -R envd:envd %s", dir), - llb.WithCustomNamef("[internal] configure user permissions for %s", dir)).Root() - } - user := root.User("envd") - // re-add the env since it's a different user - for _, env := range types.BaseEnvironment { - user = user.AddEnv(env.Name, env.Value) - } - for k, v := range g.RuntimeEnviron { - user = user.AddEnv(k, v) - } - user.AddEnv("PATH", strings.Join(g.RuntimeEnvPaths, ":")) - return user -} - -// compileUserGroup creates user `envd` -func (g *generalGraph) compileUserGroup(root llb.State) llb.State { - if g.Image != nil { - return root - } - var res llb.ExecState - if g.uid == 0 { - res = root. - Run(llb.Shlexf("groupadd -g %d envd", 1001), - llb.WithCustomName("[internal] still create group envd for root context")). - Run(llb.Shlexf(`useradd -p "" -u %d -g envd -s /bin/sh -m envd`, 1001), - llb.WithCustomName("[internal] still create user envd for root context")). - Run(llb.Shlex("usermod -s /bin/sh root"), - llb.WithCustomName("[internal] set root default shell to /bin/sh")). - Run(llb.Shlex("sed -i \"s/envd:x:1001:1001/envd:x:0:0/g\" /etc/passwd"), - llb.WithCustomName("[internal] set envd uid to 0 as root")). - Run(llb.Shlex("sed -i \"s./root./home/envd.g\" /etc/passwd"), - llb.WithCustomName("[internal] set root home dir to /home/envd")). - Run(llb.Shlex("sed -i \"s/envd:x:1001/envd:x:0/g\" /etc/group"), - llb.WithCustomName("[internal] set envd group to 0 as root group")) - } else { - res = root. - Run(llb.Shlexf(`groupadd -g %d envd`, g.gid), - llb.WithCustomName("[internal] create user group envd")). - Run(llb.Shlexf(`useradd -p "" -u %d -g envd -s /bin/sh -m envd`, g.uid), - llb.WithCustomName("[internal] create user envd")). - Run(llb.Shlex("adduser envd sudo"), - llb.WithCustomName("[internal] add user envd to sudoers")). - Run(llb.Shlexf("install -d -o envd -g %d -m 0700 /home/envd/.config /home/envd/.cache", g.gid), - llb.WithCustomName("[internal] mkdir config and cache dir")) - } - return res.Root() -} diff --git a/pkg/lang/ir/v0/util.go b/pkg/lang/ir/v0/util.go deleted file mode 100644 index ab4f57833..000000000 --- a/pkg/lang/ir/v0/util.go +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import ( - "bytes" - "crypto/md5" - "encoding/gob" - "encoding/hex" - "encoding/json" - "os/user" - "regexp" - "strconv" - "strings" - - "github.com/cockroachdb/errors" - "github.com/sirupsen/logrus" - "github.com/spf13/viper" - - "github.com/tensorchord/envd/pkg/flag" - "github.com/tensorchord/envd/pkg/lang/ir" - "github.com/tensorchord/envd/pkg/util/fileutil" -) - -func (g generalGraph) getWorkingDir() string { - return fileutil.EnvdHomeDir(g.EnvironmentName) -} - -func (g generalGraph) getExtraSourceDir() string { - return fileutil.EnvdHomeDir("extra_source") -} - -func parseLanguage(l string) (string, *string, error) { - var language, version string - if l == "" { - return "", nil, errors.New("language is required") - } - - // Get version from the string. - re := regexp.MustCompile(`\d[\d,]*[\.]?[\d{2}]*[\.]?[\d{2}]*`) - if !re.MatchString(l) { - language = l - } else { - loc := re.FindStringIndex(l) - language = l[:loc[0]] - version = l[loc[0]:] - } - - switch language { - case "python", "r", "julia": - return language, &version, nil - default: - return "", nil, errors.Newf("language %s is not supported", language) - } -} - -func getUIDGID() (int, int, error) { - owner := viper.GetString(flag.FlagBuildOwner) - if len(owner) > 0 { - logrus.WithField("flag", owner).Info("use owner") - ids := strings.Split(owner, ":") - if len(ids) > 2 { - return 0, 0, errors.Newf("wrong format for owner (uid:gid): %s", owner) - } - uid, err := strconv.Atoi(ids[0]) - if err != nil { - logrus.Info(err) - return 0, 0, errors.Wrap(err, "failed to get uid") - } - // if omit gid, will use the uid as gid - if len(ids) == 1 { - return uid, uid, nil - } - gid, err := strconv.Atoi(ids[1]) - if err != nil { - return 0, 0, errors.Wrap(err, "failed to get gid") - } - return uid, gid, nil - } - user, err := user.Current() - if err != nil { - return 0, 0, errors.Wrap(err, "failed to get uid/gid") - } - // Do not support windows yet. - uid, err := strconv.Atoi(user.Uid) - if err != nil { - return 0, 0, errors.Wrap(err, "failed to get uid") - } - gid, err := strconv.Atoi(user.Gid) - if err != nil { - return 0, 0, errors.Wrap(err, "failed to get gid") - } - return uid, gid, nil -} - -// A stream of gobs is self-describing. Each data item in the stream is preceded by a specification of its type, expressed in terms of a small set of predefined types. Pointers are not transmitted, but the things they point to are transmitted; that is, the values are flattened. -// see https://pkg.go.dev/encoding/gob#hdr-Basics -// we hash the blobs to determined if the graph changed. -func GetDefaultGraphHash() string { - var b bytes.Buffer - err := gob.NewEncoder(&b).Encode(DefaultGraph) - if err != nil { - return "" - } - data := b.Bytes() - hashD := md5.Sum(data) - return hex.EncodeToString(hashD[:]) -} - -func (g *generalGraph) Dump() (string, error) { - b, err := json.Marshal(g) - if err != nil { - return "", err - } - runtimeGraphCode := string(b) - return runtimeGraphCode, nil -} - -func (g *generalGraph) Load(code []byte) error { - err := json.Unmarshal(code, g) - if err != nil { - return errors.Wrap(err, "failed to unmarshal") - } - return nil -} - -func (g generalGraph) GeneralGraphFromLabel(label []byte) (ir.Graph, error) { - newg := generalGraph{} - err := newg.Load(label) - if err != nil { - return nil, err - } - return &newg, nil -} diff --git a/pkg/lang/ir/v0/util_test.go b/pkg/lang/ir/v0/util_test.go deleted file mode 100644 index df6741ca7..000000000 --- a/pkg/lang/ir/v0/util_test.go +++ /dev/null @@ -1,78 +0,0 @@ -// Copyright 2023 The envd Authors -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package v0 - -import "testing" - -func TestParseLanguage(t *testing.T) { - tcs := []struct { - l string - ExpectedLanguage string - ExpectedVersion string - ExpectedError bool - }{ - { - l: "python", - ExpectedLanguage: "python", - ExpectedVersion: "", - ExpectedError: false, - }, - { - l: "python3.7", - ExpectedLanguage: "python", - ExpectedVersion: "3.7", - ExpectedError: false, - }, - { - l: "python3.7.1", - ExpectedLanguage: "python", - ExpectedVersion: "3.7.1", - ExpectedError: false, - }, - { - l: "python-3.7.1", - ExpectedError: true, - }, - { - l: "r", - ExpectedLanguage: "r", - ExpectedVersion: "", - ExpectedError: false, - }, - } - - for _, tc := range tcs { - language, version, err := parseLanguage(tc.l) - if err != nil { - if !tc.ExpectedError { - t.Errorf("parseLanguage(%s) returned error: %v", tc.l, err) - } - } else { - if language != tc.ExpectedLanguage { - t.Errorf("parseLanguage(%s) returned language %s, expected %s", tc.l, language, tc.ExpectedLanguage) - } - if version == nil { - if tc.ExpectedVersion != "" { - t.Errorf("parseLanguage(%s) returned version nil, expected %s", tc.l, tc.ExpectedVersion) - } - } else { - if *version != tc.ExpectedVersion { - t.Errorf("parseLanguage(%s) returned version %s, expected %s", tc.l, *version, tc.ExpectedVersion) - } - } - } - - } -} diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index 3b0481383..a36a59781 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -26,14 +26,17 @@ import ( "github.com/moby/buildkit/client/llb" ocispecs "github.com/opencontainers/image-spec/specs-go/v1" "github.com/sirupsen/logrus" + "github.com/spf13/viper" servertypes "github.com/tensorchord/envd-server/api/types" "github.com/tensorchord/envd/pkg/config" + "github.com/tensorchord/envd/pkg/flag" "github.com/tensorchord/envd/pkg/home" "github.com/tensorchord/envd/pkg/lang/ir" "github.com/tensorchord/envd/pkg/progress/compileui" "github.com/tensorchord/envd/pkg/types" "github.com/tensorchord/envd/pkg/util/fileutil" + "github.com/tensorchord/envd/pkg/version" ) func NewGraph() ir.Graph { @@ -295,8 +298,23 @@ func (g generalGraph) EnvString() []string { } func (g generalGraph) DefaultCacheImporter() (*string, error) { - // We don't have remote cache for v1 - return nil, nil + // base image cache with python + conda for dev env + if !g.Dev { + return nil, nil + } + var res string + if g.CUDA != nil { + res = fmt.Sprintf( + "type=registry,ref=docker.io/%s/python-cache:envd-%s-cuda-%s-cudnn-%s", + viper.GetString(flag.FlagDockerOrganization), + version.GetVersionForImageTag(), *g.CUDA, g.CUDNN) + } else { + res = fmt.Sprintf( + "type=registry,ref=docker.io/%s/python-cache:envd-%s", + viper.GetString(flag.FlagDockerOrganization), + version.GetVersionForImageTag()) + } + return &res, nil } func (g *generalGraph) GetEntrypoint(buildContextDir string) ([]string, error) { diff --git a/pkg/lang/version/version.go b/pkg/lang/version/version.go index 97417ca0e..980c68bec 100644 --- a/pkg/lang/version/version.go +++ b/pkg/lang/version/version.go @@ -23,10 +23,8 @@ import ( "github.com/sirupsen/logrus" "github.com/tensorchord/envd/pkg/lang/frontend/starlark" - starlarkv0 "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v0" starlarkv1 "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v1" "github.com/tensorchord/envd/pkg/lang/ir" - v0 "github.com/tensorchord/envd/pkg/lang/ir/v0" v1 "github.com/tensorchord/envd/pkg/lang/ir/v1" ) @@ -42,11 +40,11 @@ type Getter interface { type Version string const ( + // V0 is no longer supported in envd v1. + V0 Version = "v0" // V1 is the v1 version of the starlark frontend language. + // V1 is the default version. V1 Version = "v1" - // V0 is the v0 version of the starlark frontend language. - // v0 is the default version of the language. - V0 Version = "v0" // VersionUnknown is the unknown version of the starlark frontend language. VersionUnknown Version = "unknown" ) @@ -59,13 +57,13 @@ func NewByVersion(ver string) Getter { g := &generalGetter{} switch ver { case string(V1): - g.v = V1 + logrus.Debug("explicit using v1") case string(V0): - g.v = V0 + logrus.Fatal("v0 is no longer supported in envd v1, try to use v1") default: - logrus.Debug("unknown version, using v0 by default") - g.v = V0 + logrus.Debug("unknown version, using v1 by default") } + g.v = V1 return g } @@ -83,13 +81,13 @@ func New(file string) (Getter, error) { g := &generalGetter{} if strings.Contains(comment, "# syntax=v1") { - g.v = V1 + logrus.Debug("explicit using v1") } else if strings.Contains(comment, "# syntax=v0") { - g.v = V0 + logrus.Fatal("v0 is no longer supported in envd v1, try to use v1") } else { logrus.Debug("unknown version, using v0 by default") - g.v = V0 } + g.v = V1 return g, nil } @@ -102,7 +100,8 @@ func (g generalGetter) GetDefaultGraph() ir.Graph { case V1: return v1.DefaultGraph case V0: - return v0.DefaultGraph + logrus.Fatal("v0 is no longer supported in envd v1, try to use v1") + return v1.DefaultGraph default: return nil } @@ -113,7 +112,8 @@ func (g generalGetter) GetDefaultGraphHash() string { case V1: return v1.GetDefaultGraphHash() case V0: - return v0.GetDefaultGraphHash() + logrus.Fatal("v0 is no longer supported in envd v1, try to use v1") + return v1.GetDefaultGraphHash() default: return "" } @@ -124,7 +124,8 @@ func (g generalGetter) GetStarlarkInterpreter(buildContextDir string) starlark.I case V1: return starlarkv1.NewInterpreter(buildContextDir) case V0: - return starlarkv0.NewInterpreter(buildContextDir) + logrus.Fatal("v0 is no longer supported in envd v1, try to use v1") + return starlarkv1.NewInterpreter(buildContextDir) default: return nil } From 3bfd29a18437b9cb7e6b47684be7a7d6da227202 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sat, 1 Feb 2025 23:44:16 +0800 Subject: [PATCH 323/355] feat: use moby context by default (#1964) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/home/manager.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/home/manager.go b/pkg/home/manager.go index 944371038..91534d9f1 100644 --- a/pkg/home/manager.go +++ b/pkg/home/manager.go @@ -61,7 +61,7 @@ func Initialize() error { Contexts: []types.Context{ { Name: "default", - Builder: types.BuilderTypeDocker, + Builder: types.BuilderTypeMoby, BuilderAddress: "envd_buildkitd", Runner: types.RunnerTypeDocker, RunnerAddress: nil, From 15196672f4a04417292a41edfd49cf364ca858de Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sat, 1 Feb 2025 23:52:26 +0800 Subject: [PATCH 324/355] feat: update examples to v1 syntax (#1965) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- examples/conda/build.envd | 4 +++- examples/custom-image/build.envd | 2 +- examples/dgl/build.envd | 12 ++++++++---- examples/download_files/build.envd | 4 +++- examples/dpgen2/build.envd | 4 +++- examples/ianvs/build.envd | 4 +++- examples/include_pkg/build.envd | 4 +++- examples/julia-basic/build.envd | 3 ++- examples/llm-inference/build.envd | 2 -- examples/mnist/build.envd | 4 +++- examples/python-basic/build.envd | 4 +++- examples/pytorch-profiler/build.envd | 4 +++- examples/pytorch2/build.envd | 2 +- examples/r-basic/build.envd | 3 ++- examples/stable-diffusion/build.envd | 4 +++- examples/streamlit-hello/build.envd | 4 +++- examples/streamlit-mnist/build.envd | 7 +++++-- 17 files changed, 49 insertions(+), 22 deletions(-) diff --git a/examples/conda/build.envd b/examples/conda/build.envd index 7d04d49b2..39adebd10 100644 --- a/examples/conda/build.envd +++ b/examples/conda/build.envd @@ -27,6 +27,8 @@ custom_channels: ], channel=["pytorch"], ) - base(os="ubuntu22.04", language="python3.8") + base(dev=True) + install.conda() + install.python() install.python_packages(name=["flask"]) install.cuda(version="11.2.2", cudnn="8") diff --git a/examples/custom-image/build.envd b/examples/custom-image/build.envd index 100576bc6..b233d2e8c 100644 --- a/examples/custom-image/build.envd +++ b/examples/custom-image/build.envd @@ -1,5 +1,5 @@ def build(): - base(language="python", image="python:3.11-slim") + base(image="python:3.11-slim", dev=True) install.python_packages( name=[ "via", diff --git a/examples/dgl/build.envd b/examples/dgl/build.envd index 7fb078195..8e1f08e8a 100644 --- a/examples/dgl/build.envd +++ b/examples/dgl/build.envd @@ -1,6 +1,8 @@ def build(): - # Use ubuntu22.04 as base image and install python - base(os="ubuntu22.04", language="python3") + # Use ubuntu:22.04 as base image and install python + base(image="ubuntu:22.04", dev=True) + install.conda() + install.python() # Add the packages you are using here install.python_packages(["numpy", "dgl", "torch"]) @@ -13,8 +15,10 @@ def build(): def build_gpu(): - # Use ubuntu22.04 as base image and install python - base(os="ubuntu22.04", language="python3") + # Use ubuntu:22.04 as base image and install python + base(dev=True) + install.conda() + install.python() # install cuda install.cuda(version="11.2.2", cudnn="8") diff --git a/examples/download_files/build.envd b/examples/download_files/build.envd index 8152e9f7f..2777ed669 100644 --- a/examples/download_files/build.envd +++ b/examples/download_files/build.envd @@ -1,5 +1,7 @@ def build(): - base(os="ubuntu22.04", language="python") + base(dev=True) + install.conda() + install.python() io.http( url="https://github.com/tensorchord/envd/releases/download/v0.2.0-alpha.18/envd-ssh_0.2.0-alpha.18_Linux_x86_64", checksum="sha256:163fa5d9775a3666ec91e2422a794277cc8575147f15767d364cc40157888cfb", diff --git a/examples/dpgen2/build.envd b/examples/dpgen2/build.envd index 89229c777..f32f1683a 100644 --- a/examples/dpgen2/build.envd +++ b/examples/dpgen2/build.envd @@ -23,7 +23,9 @@ def install_kubectl_kind(env_name): def build(): - base(os="ubuntu22.04", language="python3.11") + base(dev=True) + install.conda() + install.python() install.python_packages( name=[ "pydflow", diff --git a/examples/ianvs/build.envd b/examples/ianvs/build.envd index 4da057f5b..22a291daf 100644 --- a/examples/ianvs/build.envd +++ b/examples/ianvs/build.envd @@ -1,5 +1,7 @@ def build(): - base(os="ubuntu22.04", language="python3.6") + base(dev=True) + install.conda() + install.python() shell("zsh") install.apt_packages(name=["git", "libgl1-mesa-glx", "zip"]) run( diff --git a/examples/include_pkg/build.envd b/examples/include_pkg/build.envd index 9ffbf34bb..f0e2e112a 100644 --- a/examples/include_pkg/build.envd +++ b/examples/include_pkg/build.envd @@ -2,5 +2,7 @@ envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu22.04", language="python") + base(dev=True) + install.conda() + install.python() envdlib.tensorboard(8888) diff --git a/examples/julia-basic/build.envd b/examples/julia-basic/build.envd index a6cefa217..bd62d2afe 100644 --- a/examples/julia-basic/build.envd +++ b/examples/julia-basic/build.envd @@ -1,5 +1,6 @@ def build(): - base(os="ubuntu22.04", language="julia") + base(dev=True) + install.julia() # config.julia_pkg_server(url="https://mirrors.tuna.tsinghua.edu.cn/julia") install.julia_packages(["Example"]) shell("zsh") diff --git a/examples/llm-inference/build.envd b/examples/llm-inference/build.envd index 3a2c061b1..e4dfc342e 100644 --- a/examples/llm-inference/build.envd +++ b/examples/llm-inference/build.envd @@ -1,6 +1,4 @@ -# syntax=v1 def build(): - # base(os="ubuntu22.04", language="python3") base(dev=True) install.conda() install.python() diff --git a/examples/mnist/build.envd b/examples/mnist/build.envd index 2f1d57c7d..571e5d6ea 100644 --- a/examples/mnist/build.envd +++ b/examples/mnist/build.envd @@ -1,5 +1,7 @@ def base_env(): - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() install.vscode_extensions( [ "ms-python.python", diff --git a/examples/python-basic/build.envd b/examples/python-basic/build.envd index 0ae4b8423..94705c65f 100644 --- a/examples/python-basic/build.envd +++ b/examples/python-basic/build.envd @@ -1,5 +1,7 @@ def build(): - base(os="ubuntu22.04", language="python") + base(dev=True) + install.conda() + install.python() # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages( [ diff --git a/examples/pytorch-profiler/build.envd b/examples/pytorch-profiler/build.envd index 88ecca157..5d55d3bbe 100644 --- a/examples/pytorch-profiler/build.envd +++ b/examples/pytorch-profiler/build.envd @@ -2,7 +2,9 @@ envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() shell("zsh") install.cuda(version="11.2.2", cudnn="8") install.python_packages( diff --git a/examples/pytorch2/build.envd b/examples/pytorch2/build.envd index 0aeb0f570..7a4965a0e 100644 --- a/examples/pytorch2/build.envd +++ b/examples/pytorch2/build.envd @@ -2,7 +2,7 @@ envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(language="python3", image="ghcr.io/pytorch/pytorch-nightly:latest") + base(image="ghcr.io/pytorch/pytorch-nightly:latest", dev=True) shell("zsh") install.python_packages( diff --git a/examples/r-basic/build.envd b/examples/r-basic/build.envd index 522036819..3f84fb662 100644 --- a/examples/r-basic/build.envd +++ b/examples/r-basic/build.envd @@ -1,5 +1,6 @@ def build(): - base(os="ubuntu22.04", language="r") + base(dev=True) + install.r_lang() install.r_packages( [ "remotes", diff --git a/examples/stable-diffusion/build.envd b/examples/stable-diffusion/build.envd index a5313431b..dd9b7db8a 100644 --- a/examples/stable-diffusion/build.envd +++ b/examples/stable-diffusion/build.envd @@ -1,5 +1,7 @@ def build(): - base(os="ubuntu22.04", language="python") + base(dev=True) + install.conda() + install.python() # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages( [ diff --git a/examples/streamlit-hello/build.envd b/examples/streamlit-hello/build.envd index b473aecd9..62b077c5f 100644 --- a/examples/streamlit-hello/build.envd +++ b/examples/streamlit-hello/build.envd @@ -1,5 +1,7 @@ def build(): - base(os="ubuntu22.04", language="python") + base(dev=True) + install.conda() + install.python() configure_streamlit(8501) diff --git a/examples/streamlit-mnist/build.envd b/examples/streamlit-mnist/build.envd index e6624e344..2bcdc0cb7 100644 --- a/examples/streamlit-mnist/build.envd +++ b/examples/streamlit-mnist/build.envd @@ -1,5 +1,7 @@ def build(): - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() install.vscode_extensions( [ "ms-python.python", @@ -14,7 +16,8 @@ def build(): def serve(): - base(os="ubuntu22.04", language="python3") + base(dev=False) + install.python() configure_streamlit(8501) configure_mnist() From 80d77e855203aecb34d0be0f0c9814c5636ab3ff Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sun, 2 Feb 2025 18:40:23 +0800 Subject: [PATCH 325/355] feat: upgrade julia to latest LTS version (#1966) * feat: upgrade julia to latest LTS version Signed-off-by: Keming <kemingyang@tensorchord.ai> * update ci trigger Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix typo Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/CI.yml | 6 +- .github/workflows/nightly.yml | 109 ++++----------------- e2e/docs/testdata/julia_mnist/build.envd | 4 +- e2e/docs/testdata/julia_mnist/mlp_mnist.jl | 85 ++++++++++++++++ e2e/docs/testdata/julia_mnist/mnist.jl | 43 -------- pkg/lang/ir/v1/julia.sh | 13 ++- 6 files changed, 121 insertions(+), 139 deletions(-) create mode 100644 e2e/docs/testdata/julia_mnist/mlp_mnist.jl delete mode 100644 e2e/docs/testdata/julia_mnist/mnist.jl diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 6ed64ff15..722a13806 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -9,12 +9,16 @@ on: - '**.go' - 'Makefile' - 'go.**' + - 'pkg/**/*.sh' + - 'pkg/**/*.envd' pull_request: paths: - '.github/workflows/CI.yml' - '**.go' - 'Makefile' - 'go.**' + - 'pkg/**/*.sh' + - 'pkg/**/*.envd' merge_group: workflow_dispatch: @@ -51,7 +55,7 @@ jobs: args: --timeout=5m version: latest # Ref https://github.com/golangci/golangci-lint-action/issues/244 - skip-pkg-cache: true + skip-cache: true test: name: test env: diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index d115248d5..b59f892f8 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -30,7 +30,23 @@ jobs: args: --timeout=5m version: latest # Ref https://github.com/golangci/golangci-lint-action/issues/244 - skip-pkg-cache: true + skip-cache: true + build: + name: build + if: github.repository == 'tensorchord/envd' + strategy: + matrix: + os: [ ubuntu-latest, macos-latest ] + runs-on: ${{ matrix.os }} + steps: + - name: Check out code + uses: actions/checkout@v4 + - name: Setup Go + uses: actions/setup-go@v5 + with: + go-version: 'stable' + - name: Build + run: make test: name: test if: github.repository == 'tensorchord/envd' @@ -54,21 +70,13 @@ jobs: git diff --cached --exit-code || (echo 'Please run "make generate" to verify generate' && exit 1); - name: Test run: make test - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: coverage-out - path: coverage.out e2e-cli: name: e2e-cli if: github.repository == 'tensorchord/envd' env: # Disable telemetry. ENVD_ANALYTICS: false - strategy: - matrix: - os: [ ubuntu-latest ] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-22.04 steps: - name: Check out code uses: actions/checkout@v4 @@ -82,21 +90,13 @@ jobs: run: make e2e-cli-test env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-cli-coverage-out - path: e2e-cli-coverage.out e2e-lang: name: e2e-lang if: github.repository == 'tensorchord/envd' env: # Disable telemetry. ENVD_ANALYTICS: false - strategy: - matrix: - os: [ ubuntu-latest ] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-22.04 steps: - name: Check out code uses: actions/checkout@v4 @@ -110,77 +110,13 @@ jobs: run: make e2e-lang-test env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-lang-coverage-out - path: e2e-lang-coverage.out - # notifies that all test jobs are finished. - report: - if: github.repository == 'tensorchord/envd' - needs: - - test - - e2e-cli - - e2e-lang - runs-on: ubuntu-latest - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - name: Install bins - run: | - go install github.com/mattn/goveralls@latest - go install github.com/wadey/gocovmerge@latest - - name: Get coverage report - uses: actions/download-artifact@v4 - with: - name: coverage-out - path: coverage.out - - name: Get cli e2e coverage report - uses: actions/download-artifact@v4 - with: - name: e2e-cli-coverage-out - path: e2e-cli-coverage.out - - name: Get language e2e coverage report - uses: actions/download-artifact@v4 - with: - name: e2e-lang-coverage-out - path: e2e-lang-coverage.out - # - name: Send coverage - # env: - # COVERALLS_TOKEN: ${{ secrets.GITHUB_TOKEN }} - # run: | - # gocovmerge e2e-coverage.out coverage.out > final.out - # goveralls -coverprofile=final.out -service=github - build: - name: build - if: github.repository == 'tensorchord/envd' - strategy: - matrix: - os: [ ubuntu-latest, macos-latest ] - runs-on: ${{ matrix.os }} - steps: - - name: Check out code - uses: actions/checkout@v4 - - name: Setup Go - uses: actions/setup-go@v5 - with: - go-version: 'stable' - - name: Build - run: make e2e-doc: name: e2e-doc if: github.repository == 'tensorchord/envd' env: # Disable telemetry. ENVD_ANALYTICS: false - strategy: - matrix: - os: [ubuntu-latest] - runs-on: ${{ matrix.os }} + runs-on: ubuntu-22.04 steps: - name: Check out code uses: actions/checkout@v4 @@ -194,8 +130,3 @@ jobs: run: make e2e-doc-test env: GIT_LATEST_TAG: ${{ steps.get-latest-tag.outputs.tag }} - - name: Upload coverage report - uses: actions/upload-artifact@v4 - with: - name: e2e-doc-coverage-out - path: e2e-doc-coverage.out diff --git a/e2e/docs/testdata/julia_mnist/build.envd b/e2e/docs/testdata/julia_mnist/build.envd index 71db1252e..511f4c252 100644 --- a/e2e/docs/testdata/julia_mnist/build.envd +++ b/e2e/docs/testdata/julia_mnist/build.envd @@ -1,7 +1,7 @@ # syntax=v1 + def build(): base(dev=True) - install.julia() install.julia_packages(name=["Flux", "MLDatasets"]) - runtime.command(commands={"julia-mnist": "julia mnist.jl"}) + runtime.command(commands={"julia-mnist": "julia mlp_mnist.jl"}) diff --git a/e2e/docs/testdata/julia_mnist/mlp_mnist.jl b/e2e/docs/testdata/julia_mnist/mlp_mnist.jl new file mode 100644 index 000000000..050e6dd79 --- /dev/null +++ b/e2e/docs/testdata/julia_mnist/mlp_mnist.jl @@ -0,0 +1,85 @@ +# https://github.com/FluxML/model-zoo/blob/master/vision/mlp_mnist/mlp_mnist.jl +# License: MIT Copyright (c) 2017 by Flux contributors + +# Simple multi-layer perceptron, for the MNIST hand-written digits. +# This example does not use a GPU, it's small enough not to need one. + +using Flux, MLDatasets, Statistics + +# Our model is very simple: Its one "hidden layer" has 32 "neurons" each connected to every input pixel. +# Each has a sigmoid nonlinearity, and is connected to every "neuron" in the output layer. +# Finally, softmax produces probabilities, i.e. positive numbers which add up to 1: + +model = Chain(Dense(28^2 => 32, sigmoid), Dense(32 => 10), softmax) + +#===== DATA =====# + +# Calling MLDatasets.MNIST() will download the dataset if necessary, +# and return a struct containing it. +# It takes a few seconds to read from disk each time, so do this once: + +train_data = MLDatasets.MNIST() # i.e. split=:train +test_data = MLDatasets.MNIST(split=:test) + +# train_data.features is a 28×28×60000 Array{Float32, 3} of the images. +# We need a 2D array for our model. Let's combine the reshape needed with +# other pre-processing, in a function: + +function simple_loader(data::MNIST; batchsize::Int=64) + x2dim = reshape(data.features, 28^2, :) + yhot = Flux.onehotbatch(data.targets, 0:9) + Flux.DataLoader((x2dim, yhot); batchsize, shuffle=true) +end + +# train_data.targets is a 60000-element Vector{Int}, of labels from 0 to 9. +# Flux.onehotbatch([0,1,9], 0:9) makes a matrix of 0 and 1. + +simple_loader(train_data) # returns a DataLoader, with first element a tuple like this: + +x1, y1 = first(simple_loader(train_data)); # (784×64 Matrix{Float32}, 10×64 OneHotMatrix) + +model(x1) # x1 is the right shape for our model + +y1 # y1 is the same shape as the model output. + +# @show Flux.crossentropy(model(x1), y1); # This will be our loss function + +#===== ACCURACY =====# + +# We're going to log accuracy and loss during training. There's no advantage to +# calculating these on minibatches, since MNIST is small enough to do it at once. + +function simple_accuracy(model, data::MNIST=test_data) + (x, y) = only(simple_loader(data; batchsize=length(data))) # make one big batch + y_hat = model(x) + iscorrect = Flux.onecold(y_hat) .== Flux.onecold(y) # BitVector + acc = round(100 * mean(iscorrect); digits=2) +end + +# @show simple_accuracy(model); # accuracy about 10%, on training data, before training! + +#===== TRAINING =====# + +# Make a dataloader using the desired batchsize: + +train_loader = simple_loader(train_data, batchsize = 256) + +# Initialise storage needed for the Adam optimiser, with our chosen learning rate: + +opt_state = Flux.setup(Adam(3e-4), model); + +# Then train for 10 epochs, printing out details as we go: + +for epoch in 1:10 + loss = 0.0 + for (x, y) in train_loader + # Compute the loss and the gradients: + l, gs = Flux.withgradient(m -> Flux.crossentropy(m(x), y), model) + # Update the model parameters (and the Adam momenta): + Flux.update!(opt_state, model, gs[1]) + # Accumulate the mean loss, just for logging: + loss += l / length(train_loader) + end +end + +print(simple_accuracy(model, test_data)) diff --git a/e2e/docs/testdata/julia_mnist/mnist.jl b/e2e/docs/testdata/julia_mnist/mnist.jl deleted file mode 100644 index e4327ad3a..000000000 --- a/e2e/docs/testdata/julia_mnist/mnist.jl +++ /dev/null @@ -1,43 +0,0 @@ -using Flux, MLDatasets -using Flux: train!, onehotbatch - -ENV["DATADEPS_ALWAYS_ACCEPT"] = "true" - -# Load training data (images, labels) -x_train, y_train = MLDatasets.MNIST(split=:train)[:] -# Load test data (images, labels) -x_test, y_test = MLDatasets.MNIST(split=:test)[:] -# Convert grayscale to float -x_train = Float32.(x_train) -# Create labels batch -y_train = Flux.onehotbatch(y_train, 0:9) - -model = Chain( - Dense(784, 256, relu), - Dense(256, 64, relu), - Dense(64, 10, relu), - softmax -) - -loss(x, y) = Flux.Losses.logitcrossentropy(model(x), y) - -optimizer = ADAM(0.0001) - -parameters = Flux.params(model) -# flatten() function converts array 28x28x60000 into 784x60000 (28*28x60000) -train_data = [(Flux.flatten(x_train), Flux.flatten(y_train))] -# Range in loop can be used smaller -for i in 1:100 - Flux.train!(loss, parameters, train_data, optimizer) -end - -test_data = [(Flux.flatten(x_test), y_test)] -accuracy = 0 -for i in 1:length(y_test) - global accuracy - if findmax(model(test_data[1][1][:, i]))[2] - 1 == y_test[i] - accuracy = accuracy + 1 - end -end - -print(accuracy / length(y_test)) \ No newline at end of file diff --git a/pkg/lang/ir/v1/julia.sh b/pkg/lang/ir/v1/julia.sh index 9d5c5c71d..c5ba65cc2 100644 --- a/pkg/lang/ir/v1/julia.sh +++ b/pkg/lang/ir/v1/julia.sh @@ -1,12 +1,18 @@ set -o pipefail && \ -JULIA_URL="https://julialang-s3.julialang.org/bin/linux/x64/1.8/julia-1.8.5-linux-x86_64.tar.gz"; \ -SHA256SUM="e71a24816e8fe9d5f4807664cbbb42738f5aa9fe05397d35c81d4c5d649b9d05"; \ +UNAME_M="$(uname -m)" && \ +if [ "${UNAME_M}" = "x86_64" ]; then \ + JULIA_URL="https://julialang-s3.julialang.org/bin/linux/x64/1.10/julia-1.10.8-linux-x86_64.tar.gz"; \ + SHA256SUM="0410175aeec3df63173c15187f2083f179d40596d36fd3a57819cc5f522ae735"; \ +elif [ "{UNAME_M}" = "aarch64" ]; then \ + JULIA_URL="https://julialang-s3.julialang.org/bin/linux/aarch64/1.10/julia-1.10.8-linux-aarch64.tar.gz" \ + SHA256SUM="8d63dd12595a08edc736be8d6c4fea1840f137b81c62079d970dbd1be448b8cd"; \ +fi && \ wget "${JULIA_URL}" -O /tmp/julia.tar.gz && \ echo "${SHA256SUM} /tmp/julia.tar.gz" > /tmp/sha256sum && \ sha256sum -c -s /tmp/sha256sum EXIT_CODE=$? -if [ $EXIT_CODE -ne 0 ]; then +if [ $EXIT_CODE -ne 0 ]; then echo "CHECKSUM FAILED" && \ rm /tmp/julia.tar.gz && \ wget "${JULIA_URL}" -O /tmp/julia.tar.gz && \ @@ -14,4 +20,3 @@ if [ $EXIT_CODE -ne 0 ]; then else echo "CHECKSUM PASSED" fi - From f74782795ed92c681516f1b25ec5b9ba5206e346 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 3 Feb 2025 00:06:29 +0800 Subject: [PATCH 326/355] fix: r-lang in ubuntu:22.04 (#1967) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- ...rlang_mnist_test.go => rlang_iris_test.go} | 10 +- e2e/docs/testdata/complex/build.envd | 2 +- e2e/docs/testdata/julia_mnist/build.envd | 1 + e2e/docs/testdata/rlang/build.envd | 2 +- e2e/docs/testdata/rlang_iris/build.envd | 9 ++ e2e/docs/testdata/rlang_iris/iris.r | 36 +++++++ e2e/docs/testdata/rlang_mnist/build.envd | 10 -- e2e/docs/testdata/rlang_mnist/mnist.r | 44 --------- pkg/lang/ir/v1/julia.go | 9 -- pkg/lang/ir/v1/r.go | 26 +++-- pkg/lang/ir/v1/system.go | 96 +------------------ 11 files changed, 67 insertions(+), 178 deletions(-) rename e2e/docs/{rlang_mnist_test.go => rlang_iris_test.go} (81%) create mode 100644 e2e/docs/testdata/rlang_iris/build.envd create mode 100644 e2e/docs/testdata/rlang_iris/iris.r delete mode 100644 e2e/docs/testdata/rlang_mnist/build.envd delete mode 100644 e2e/docs/testdata/rlang_mnist/mnist.r diff --git a/e2e/docs/rlang_mnist_test.go b/e2e/docs/rlang_iris_test.go similarity index 81% rename from e2e/docs/rlang_mnist_test.go rename to e2e/docs/rlang_iris_test.go index 210c1a66f..9c812e17c 100644 --- a/e2e/docs/rlang_mnist_test.go +++ b/e2e/docs/rlang_iris_test.go @@ -21,17 +21,17 @@ import ( "github.com/tensorchord/envd/e2e" ) -var _ = Describe("rlang_mnist", Ordered, func() { - exampleName := "rlang_mnist" +var _ = Describe("rlang_iris", Ordered, func() { + exampleName := "rlang_iris" testcase := "e2e" e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) BeforeAll(e.BuildImage(true)) BeforeEach(e.RunContainer()) It("execute runtime command `Rscript`", func() { - res, err := e.ExecRuntimeCommand("rlang-mnist") + res, err := e.ExecRuntimeCommand("rlang-iris") Expect(err).To(BeNil()) - isNumeric := "TRUE" - Expect(res).To(BeEquivalentTo(isNumeric)) + Expect(res).To(ContainSubstring("classif.acc")) + Expect(res).To(ContainSubstring("classif.ce")) }) AfterEach(e.DestroyContainer()) }) diff --git a/e2e/docs/testdata/complex/build.envd b/e2e/docs/testdata/complex/build.envd index 74975225c..fc294dbe3 100644 --- a/e2e/docs/testdata/complex/build.envd +++ b/e2e/docs/testdata/complex/build.envd @@ -3,7 +3,7 @@ def build(): base(dev=True) - install.cuda(version="11.2.2", cudnn="8") + install.cuda(version="12.3.2", cudnn="9") install.conda() install.python() config.apt_source( diff --git a/e2e/docs/testdata/julia_mnist/build.envd b/e2e/docs/testdata/julia_mnist/build.envd index 511f4c252..67440e761 100644 --- a/e2e/docs/testdata/julia_mnist/build.envd +++ b/e2e/docs/testdata/julia_mnist/build.envd @@ -1,5 +1,6 @@ # syntax=v1 + def build(): base(dev=True) install.julia() diff --git a/e2e/docs/testdata/rlang/build.envd b/e2e/docs/testdata/rlang/build.envd index 1809a2375..cbd050eee 100644 --- a/e2e/docs/testdata/rlang/build.envd +++ b/e2e/docs/testdata/rlang/build.envd @@ -4,4 +4,4 @@ def build(): base(dev=True) install.r_lang() - install.r_packages(name=["drat"]) + install.r_packages(name=["remotes"]) diff --git a/e2e/docs/testdata/rlang_iris/build.envd b/e2e/docs/testdata/rlang_iris/build.envd new file mode 100644 index 000000000..7e6af268d --- /dev/null +++ b/e2e/docs/testdata/rlang_iris/build.envd @@ -0,0 +1,9 @@ +# syntax=v1 + + +def build(): + base(dev=True) + install.apt_packages(name=["build-essential"]) + install.r_lang() + install.r_packages(name=["mlr3", "mlr3learners"]) + runtime.command(commands={"rlang-iris": "Rscript iris.r 2> /dev/null"}) diff --git a/e2e/docs/testdata/rlang_iris/iris.r b/e2e/docs/testdata/rlang_iris/iris.r new file mode 100644 index 000000000..38b9007d7 --- /dev/null +++ b/e2e/docs/testdata/rlang_iris/iris.r @@ -0,0 +1,36 @@ +# Example from https://github.com/mlr-org/mlr3gallery +# MIT License Copyright (c) 2019 mlr-org + +library(mlr3learners) + +# creates mlr3 task from scratch, from a data.frame +# 'target' names the column in the dataset we want to learn to predict +task = as_task_classif(iris, target = "Species") +# in this case we could also take the iris example from mlr3's dictionary of shipped example tasks +# 2 equivalent calls to create a task. The second is just sugar for the user. +task = mlr_tasks$get("iris") +task = tsk("iris") +# print(task) +# create learner from dictionary of mlr3learners +# 2 equivalent calls: +learner_1 = mlr_learners$get("classif.rpart") +learner_1 = lrn("classif.rpart") +# print(learner_1) + +# train learner on subset of task +learner_1$train(task, row_ids = 1:120) +# this is what the decision tree looks like +# print(learner_1$model) +# predict using observations from task +prediction = learner_1$predict(task, row_ids = 121:150) +# predict using "new" observations from an external data.frame +prediction = learner_1$predict_newdata(newdata = iris[121:150, ]) +# print(prediction) + +# head(as.data.table(mlr_measures)) +scores = prediction$score(msr("classif.acc")) +print(scores) +scores = prediction$score(msrs(c("classif.acc", "classif.ce"))) +print(scores) +cm = prediction$confusion +print(cm) diff --git a/e2e/docs/testdata/rlang_mnist/build.envd b/e2e/docs/testdata/rlang_mnist/build.envd deleted file mode 100644 index 1f5f08b30..000000000 --- a/e2e/docs/testdata/rlang_mnist/build.envd +++ /dev/null @@ -1,10 +0,0 @@ -# syntax=v1 - - -def build(): - base(dev=True) - install.r_lang() - install.python() - install.r_packages(name=["keras"]) - install.python_packages(name=["tensorflow"]) - runtime.command(commands={"rlang-mnist": "Rscript mnist.r 1> /dev/null"}) diff --git a/e2e/docs/testdata/rlang_mnist/mnist.r b/e2e/docs/testdata/rlang_mnist/mnist.r deleted file mode 100644 index 9f8e6bc9d..000000000 --- a/e2e/docs/testdata/rlang_mnist/mnist.r +++ /dev/null @@ -1,44 +0,0 @@ -Sys.setenv(TF_CPP_MIN_LOG_LEVEL = "3") -library(keras) - -mnist <- dataset_mnist() -x_train <- mnist$train$x -y_train <- mnist$train$y -x_test <- mnist$test$x -y_test <- mnist$test$y - - -# reshape -x_train <- array_reshape(x_train, c(nrow(x_train), 784)) -x_test <- array_reshape(x_test, c(nrow(x_test), 784)) -# rescale -x_train <- x_train / 255 -x_test <- x_test / 255 - -y_train <- to_categorical(y_train, 10) -y_test <- to_categorical(y_test, 10) - -model <- keras_model_sequential() -model %>% - layer_dense(units = 256, activation = 'relu', input_shape = c(784)) %>% - layer_dropout(rate = 0.4) %>% - layer_dense(units = 128, activation = 'relu') %>% - layer_dropout(rate = 0.3) %>% - layer_dense(units = 10, activation = 'softmax') - -model %>% compile( - loss = 'categorical_crossentropy', - optimizer = optimizer_rmsprop(), - metrics = c('accuracy'), -) - -history <- model %>% fit( - x_train, y_train, - epochs = 1, batch_size = 128, - validation_split = 0.2, - verbose=3 -) - -acc <- model %>% evaluate(x_test, y_test, verbose=3) - -write(is.numeric(acc), stderr()) \ No newline at end of file diff --git a/pkg/lang/ir/v1/julia.go b/pkg/lang/ir/v1/julia.go index 6510acee6..228b693fa 100644 --- a/pkg/lang/ir/v1/julia.go +++ b/pkg/lang/ir/v1/julia.go @@ -36,7 +36,6 @@ var downloadJuliaBashScript string // getJuliaBinary returns the llb.State only after setting up Julia environment // A successful run of getJuliaBinary should set up the Julia environment func (g generalGraph) getJuliaBinary(root llb.State) llb.State { - base := llb.Image(builderImage) builder := base. Run(llb.Shlexf("sh -c '%s'", downloadJuliaBashScript), @@ -57,33 +56,26 @@ func (g generalGraph) getJuliaBinary(root llb.State) llb.State { // installJulia returns the llb.State only after adding the Julia environment to $PATH // A successful run of installJulia should add Julia to global environment path func (g *generalGraph) installJulia(root llb.State) llb.State { - confJulia := g.getJuliaBinary(root) confJulia = g.updateEnvPath(confJulia, juliaBinDir) - return confJulia } // installJuliaPackages returns the llb.State only after installing required Julia packages // A successful run of installJuliaPackages should install Julia packages under "/opt/julia/user_packages" and export the path func (g *generalGraph) installJuliaPackages(root llb.State) llb.State { - if len(g.JuliaPackages) == 0 { return root } root = root.File(llb.Mkdir(juliaPkgDir, 0755, llb.WithParents(true)), llb.WithCustomName("[internal] creating folder for julia packages")) - // Allow root to utilize the installed Julia environment root = g.updateEnvPath(root, juliaBinDir) - // Export "/opt/julia/user_packages" as the additional library path for root root = root.AddEnv("JULIA_DEPOT_PATH", juliaPkgDir) - // Export "/opt/julia/user_packages" as the additional library path for users g.RuntimeEnviron["JULIA_DEPOT_PATH"] = juliaPkgDir - // Change owner of the "/opt/julia/user_packages" to users g.UserDirectories = append(g.UserDirectories, juliaPkgDir) @@ -93,6 +85,5 @@ func (g *generalGraph) installJuliaPackages(root llb.State) llb.State { Run(llb.Shlex(command), llb.WithCustomNamef("[internal] installing Julia packages: %s", strings.Join(packages, " "))) root = run.Root() } - return root } diff --git a/pkg/lang/ir/v1/r.go b/pkg/lang/ir/v1/r.go index c09a82c28..5527afc75 100644 --- a/pkg/lang/ir/v1/r.go +++ b/pkg/lang/ir/v1/r.go @@ -21,17 +21,22 @@ import ( "github.com/moby/buildkit/client/llb" ) -func (g generalGraph) installRLang(root llb.State) llb.State { - - installR := "apt-get update && apt-get install -y -t focal-cran40 r-base" - - run := root.Run(llb.Shlexf("bash -c \"%s\"", installR), +const rPath = "/usr/local/lib/R/site-library" + +func (g *generalGraph) installRLang(root llb.State) llb.State { + g.UserDirectories = append(g.UserDirectories, rPath) + prepare := root.Run(llb.Shlex(`sh -c " +apt-get update && apt-get install -y --no-install-recommends --fix-missing gpg && +wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | gpg --dearmor -o /usr/share/keyrings/r-project.gpg && +echo "deb [signed-by=/usr/share/keyrings/r-project.gpg] https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/" | tee -a /etc/apt/sources.list.d/r-project.list +"`), llb.WithCustomName("add R public GPG key")).Root() + run := prepare.Run( + llb.Shlex(`sh -c "apt-get update && apt-get install -y --no-install-recommends r-base"`), llb.WithCustomNamef("[internal] apt install R environment from CRAN repository")) return run.Root() } func (g generalGraph) installRPackages(root llb.State) llb.State { - if len(g.RPackages) == 0 { return root } @@ -41,18 +46,11 @@ func (g generalGraph) installRPackages(root llb.State) llb.State { mirrorURL = *g.CRANMirrorURL } - lib := "/usr/local/lib/R/site-library/" - - root = root. - Run(llb.Shlexf("chmod 777 %s", lib), llb.WithCustomNamef("[internal] setting execute permission for default R package library for envd users")).Root() - for _, packages := range g.RPackages { - command := fmt.Sprintf(`R -e 'options(repos = "%s"); install.packages(c("%s"), lib = "%s")'`, mirrorURL, strings.Join(packages, `","`), lib) + command := fmt.Sprintf(`R -e 'options(repos = "%s"); install.packages(c("%s"), lib = "%s")'`, mirrorURL, strings.Join(packages, `","`), rPath) run := root. Run(llb.Shlex(command), llb.WithCustomNamef("[internal] installing R packages: %s", strings.Join(packages, " "))) root = run.Root() - } - return root } diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index ba3edef27..c1ae9df0f 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -33,13 +33,6 @@ import ( "github.com/tensorchord/envd/pkg/util/fileutil" ) -// signFolder stores the path to the apt-source signature in string format -// The value of signFolder should always be /etc/apt/keyrings -const signFolder = "/etc/apt/keyrings" - -// signURI stores the third-party URI for downloading the signature of the corresponding repo -const signURI = "https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc" - func (g generalGraph) compileUbuntuAPT(root llb.State) llb.State { if g.UbuntuAPTSource != nil { logrus.WithField("source", *g.UbuntuAPTSource).Debug("using custom APT source") @@ -53,89 +46,6 @@ func (g generalGraph) compileUbuntuAPT(root llb.State) llb.State { return root } -// copyAPTSignature returns the state and the path in string format -// The returned string represents the location of the apt-source signature -// A successful run of copyAPTSignature should return path of /etc/apt/keyrings/*.asc -func (g generalGraph) copyAPTSignature(root llb.State, name string, url string) (llb.State, string) { - - var fileName = fmt.Sprintf("%s.asc", name) - - // path stores the location of the signature file - // The value of path should be /etc/apt/keyrings/*.asc - var path = filepath.Join(signFolder, fileName) - - base := llb.Image(builderImage) - builder := base. - Run(llb.Shlexf("sh -c \"curl %s >> %s\"", url, fileName), - llb.WithCustomName("[internal] downloading apt-source signature in base image")).Root() - - aptSign := root. - File(llb.Mkdir(signFolder, 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] setting target apt-source signature folder")). - File(llb.Copy(builder, fileName, path), - llb.WithCustomName("[internal] copy signature from builder")) - - return aptSign, path -} - -// configRSrc returns the state and the content in DEB822 format for third-party apt-source -// The returned string contains all configuration for adding third-party into apt source list -// A successful run of configRSrc should return the content strictly follow the DEB822 format -func (g generalGraph) configRSrc(root llb.State, aptConfig ir.APTConfig, sign string) (llb.State, string) { - - var enabled = fmt.Sprintf("Enabled: %s\n", aptConfig.Enabled) - var types = fmt.Sprintf("Types: %s\n", aptConfig.Types) - var uris = fmt.Sprintf("URIs: %s\n", aptConfig.URIs) - var suites = fmt.Sprintf("Suites: %s\n", aptConfig.Suites) - var components = fmt.Sprintf("Components: %s\n", aptConfig.Components) - var architecture = fmt.Sprintf("Architectures: %s\n", aptConfig.Arch) - - aptSign, signPath := g.copyAPTSignature(root, aptConfig.Name, sign) - var signature = fmt.Sprintf("Signed-By: %s\n", signPath) - - var content strings.Builder - content.WriteString(enabled) - content.WriteString(types) - content.WriteString(uris) - content.WriteString(suites) - content.WriteString(components) - content.WriteString(signature) - content.WriteString(architecture) - - return aptSign, content.String() -} - -// compileRLang returns the llb.State only after compoiling the environment for installing R language -// A successful run of compileRLang should set up the official R apt repo into /etc/apt/sources.list.d/*.sources -func (g generalGraph) compileRLang(root llb.State) llb.State { - - var aptConfig = ir.APTConfig{ - Name: "R-base", // Name for the *.sources file in /etc/apt/sources.list.d - Enabled: "yes", // Represents the validation of the third-party repo - Types: "deb", // Type of the repo, binary or source code - URIs: "https://cloud.r-project.org/bin/linux/ubuntu", // URI repo for the package - Suites: "focal-cran40/", // Branch of the package - Components: "", // Distribution of the package. E.g. main, non-free - Signed: "R-base.asc", // Name for the signature file - Arch: "", // Architecture that is supported - } - - var file = fmt.Sprintf("/etc/apt/sources.list.d/%s.sources", aptConfig.Name) - - aptSource, content := g.configRSrc(root, aptConfig, signURI) - - aptRLang := aptSource. - File(llb.Mkdir("/etc/apt/sources.list.d/", 0755, llb.WithParents(true)), - llb.WithCustomName("[internal] setting apt-source folder sources.list.d")). - File(llb.Mkfile(file, 0644, []byte(content)), - llb.WithCustomName("[internal] setting apt-source file")). - File(llb.Mkfile("/etc/apt/apt.conf.d/DEB822.conf", 0644, []byte("APT::Sources::Use-Deb822 true;\n")), - llb.WithCustomName("[internal] setting apt-conf file to support DEB822 format")) - - return aptRLang - -} - func (g generalGraph) compileRun(root llb.State) llb.State { if len(g.Exec) == 0 { return root @@ -259,8 +169,7 @@ func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { case "python": root, err = g.installPython(root) case "r": - rSrc := g.compileRLang(root) - root = g.installRLang(rSrc) + root = g.installRLang(root) case "julia": root = g.installJulia(root) } @@ -273,8 +182,7 @@ func (g *generalGraph) compileLanguage(root llb.State) (llb.State, error) { case "python": lang, err = g.installPython(root) case "r": - rSrc := g.compileRLang(root) - lang = g.installRLang(rSrc) + lang = g.installRLang(root) case "julia": lang = g.installJulia(root) } From ab9be8045170afa4e44d75dc49ca48e8dce4f897 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 6 Feb 2025 08:00:05 +0800 Subject: [PATCH 327/355] docs: change to v1 in readme (#1968) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- README.md | 80 ++++++++++++++++------------ e2e/docs/testdata/complex/build.envd | 2 +- 2 files changed, 46 insertions(+), 36 deletions(-) diff --git a/README.md b/README.md index 0c1d8bcc5..1dce39f4f 100644 --- a/README.md +++ b/README.md @@ -37,10 +37,13 @@ Environments built with `envd` provide the following features out-of-the-box: ```python def build(): + base(dev=True) + install.conda() + install.python() install.python_packages(name = [ "numpy", ]) - shell("zsh") + shell("fish") config.jupyter() ``` @@ -92,7 +95,9 @@ Forget copy-pasting Dockerfile instructions - use envd to easily build functions envdlib = include("https://github.com/tensorchord/envdlib") def build(): - base(os="ubuntu22.04", language="python") + base(dev=True) + install.conda() + install.python() envdlib.tensorboard(host_port=8888) ``` @@ -176,13 +181,15 @@ The build manifest `build.envd` looks like: ```python title=build.envd def build(): - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() # Configure the pip index if needed. # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages(name = [ "numpy", ]) - shell("zsh") + shell("fish") ``` *Note that we use Python here as an example but please check out examples for other languages such as R and Julia [here](https://github.com/tensorchord/envd/tree/main/examples).* @@ -195,29 +202,34 @@ cd envd-quick-start && envd up ```bash $ cd envd-quick-start && envd up -[+] ⌚ parse build.envd and download/cache dependencies 2.8s ✅ (finished) - => download oh-my-zsh 2.8s -[+] 🐋 build envd environment 18.3s (25/25) ✅ (finished) - => create apt source dir 0.0s - => local://cache-dir 0.1s - => => transferring cache-dir: 5.12MB 0.1s -... - => pip install numpy 13.0s - => copy /oh-my-zsh /home/envd/.oh-my-zsh 0.1s - => mkfile /home/envd/install.sh 0.0s - => install oh-my-zsh 0.1s - => mkfile /home/envd/.zshrc 0.0s - => install shell 0.0s - => install PyPI packages 0.0s - => merging all components into one 0.3s - => => merging 0.3s - => mkfile /home/envd/.gitconfig 0.0s - => exporting to oci image format 2.4s - => => exporting layers 2.0s - => => exporting manifest sha256:7dbe9494d2a7a39af16d514b997a5a8f08b637f 0.0s - => => exporting config sha256:1da06b907d53cf8a7312c138c3221e590dedc2717 0.0s - => => sending tarball 0.4s -envd-quick-start via Py v3.9.13 via 🅒 envd +[+] ⌚ parse build.envd and download/cache dependencies 6.2s ✅ (finished) +[+] build envd environment 19.0s (47/47) FINISHED + => CACHED [internal] setting pip cache mount permissions 0.0s + => docker-image://docker.io/tensorchord/envd-sshd-from-scratch:v0.4.3 2.3s + => => resolve docker.io/tensorchord/envd-sshd-from-scratch:v0.4.3 2.3s + => docker-image://docker.io/library/ubuntu:22.04 0.0s +...... + => [internal] pip install numpy 2.5s + => CACHED [internal] download fish shell 0.0s + => [internal] configure user permissions for /opt/conda 1.0s + => [internal] create dir for ssh key 0.5s + => [internal] install ssh keys 0.2s + => [internal] copy fish shell from the builder image 0.2s + => [internal] install fish shell 0.5s +...... + => [internal] create work dir: /home/envd/envd-quick-start 0.2s + => exporting to image 7.7s + => => exporting layers 7.7s + => => writing image sha256:464a0c12759d3d1732404f217d5c6e06d0ee4890cccd66391a608daf2bd314e4 0.0s + => => naming to docker.io/library/envd-quick-start:dev 0.0s +------ + > importing cache manifest from docker.io/tensorchord/python-cache:envd-v0.4.3: +------ +⣽ [5/5] attach the environment [2s] +Welcome to fish, the friendly interactive shell +Type help for instructions on how to use fish + +envd-quick-start on git master [!] via Py v3.11.11 via 🅒 envd as sudo ⬢ [envd]❯ # You are in the container-based environment! ``` @@ -227,13 +239,15 @@ Please edit the `build.envd` to enable jupyter notebook: ```python title=build.envd def build(): - base(os="ubuntu22.04", language="python3") + base(dev=True) + install.conda() + install.python() # Configure the pip index if needed. # config.pip_index(url = "https://pypi.tuna.tsinghua.edu.cn/simple") install.python_packages(name = [ "numpy", ]) - shell("zsh") + shell("fish") config.jupyter() ``` @@ -249,7 +263,7 @@ envd-quick-start http://localhost:42779 envd-quick-start.envd /home/g ## Difference between v0 and v1 > [!NOTE] -> To use the `v1` config file, add `# syntax=v1` to the first line of your `build.envd` file. +> Start from `envd v1.0`, `v1` syntax is the default syntax for `build.envd` file. | Features | v0 | v1 | | --- | --- | --- | @@ -259,11 +273,7 @@ envd-quick-start http://localhost:42779 envd-quick-start.envd /home/g | support serving | ⚠️ | ✅ | | support custom base image | ⚠️ | ✅ | | support installing multiple languages | ⚠️ | ✅ | -| support `moby` builder | ❌ | ✅ <sup>[(a)](#v1-moby)</sup> | - -> [!NOTE] -> <a name="v1-moby">(a)</a> To use the `moby` builder, you will need to create a new context with `envd context create --name moby-test --builder moby-worker --use`. -> For more information about the `moby` builder, check the [issue-1693](https://github.com/tensorchord/envd/issues/1693). +| support `moby` builder | ❌ | ✅ | > [!IMPORTANT] > For more details, check the [upgrade to v1](https://envd.tensorchord.ai/guide/v1.html) doc. diff --git a/e2e/docs/testdata/complex/build.envd b/e2e/docs/testdata/complex/build.envd index fc294dbe3..2dccf6d93 100644 --- a/e2e/docs/testdata/complex/build.envd +++ b/e2e/docs/testdata/complex/build.envd @@ -3,7 +3,7 @@ def build(): base(dev=True) - install.cuda(version="12.3.2", cudnn="9") + install.cuda(version="11.8.0", cudnn="8") install.conda() install.python() config.apt_source( From b53e06d4943c149594dfe1da52043febb51686c5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 7 Feb 2025 10:26:09 +0800 Subject: [PATCH 328/355] fix: envd cmd alias conflict, bump buildkit container version (#1970) fix: envd cmd alias conflict, bump version Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 65 ++-- go.sum | 862 ++++++++++++++++++++++++++++++++++++++++++----- pkg/app/app.go | 2 +- pkg/app/debug.go | 1 - 4 files changed, 810 insertions(+), 120 deletions(-) diff --git a/go.mod b/go.mod index 864cdb99f..e2c83ab09 100644 --- a/go.mod +++ b/go.mod @@ -9,13 +9,13 @@ require ( github.com/bcicen/ctop v0.7.7 github.com/charmbracelet/bubbletea v0.24.2 github.com/charmbracelet/lipgloss v0.8.0 - github.com/cockroachdb/errors v1.11.1 + github.com/cockroachdb/errors v1.11.3 github.com/containerd/console v1.0.4 github.com/containerd/log v0.1.0 github.com/containers/image/v5 v5.33.0 github.com/creack/pty v1.1.18 - github.com/docker/cli v27.4.0-rc.2+incompatible - github.com/docker/docker v27.4.0-rc.2+incompatible + github.com/docker/cli v27.5.0+incompatible + github.com/docker/docker v27.5.1+incompatible github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 @@ -23,10 +23,10 @@ require ( github.com/go-git/go-git/v5 v5.13.1 github.com/golang/mock v1.6.0 github.com/google/uuid v1.6.0 - github.com/hashicorp/go-getter v1.7.5 + github.com/hashicorp/go-getter v1.7.8 github.com/mattn/go-isatty v0.0.19 - github.com/moby/buildkit v0.18.2 - github.com/moby/term v0.5.0 + github.com/moby/buildkit v0.19.0 + github.com/moby/term v0.5.2 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.22.2 @@ -44,7 +44,7 @@ require ( github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab - github.com/urfave/cli/v2 v2.25.7 + github.com/urfave/cli/v2 v2.27.5 go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd golang.org/x/crypto v0.32.0 golang.org/x/sync v0.10.0 @@ -58,8 +58,8 @@ require ( cloud.google.com/go/iam v1.1.5 // indirect cloud.google.com/go/storage v1.36.0 // indirect dario.cat/mergo v1.0.1 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect - github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect + github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/BurntSushi/toml v1.4.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.1.3 // indirect @@ -71,12 +71,13 @@ require ( github.com/cloudflare/circl v1.3.7 // indirect github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect github.com/cockroachdb/redact v1.1.5 // indirect - github.com/containerd/containerd v1.7.24 // indirect - github.com/containerd/containerd/api v1.7.19 // indirect + github.com/containerd/containerd/api v1.8.0 // indirect + github.com/containerd/containerd/v2 v2.0.2 // indirect github.com/containerd/continuity v0.4.5 // indirect - github.com/containerd/errdefs v0.3.0 // indirect - github.com/containerd/platforms v0.2.1 // indirect - github.com/containerd/ttrpc v1.2.5 // indirect + github.com/containerd/errdefs v1.0.0 // indirect + github.com/containerd/errdefs/pkg v0.3.0 // indirect + github.com/containerd/platforms v1.0.0-rc.1 // indirect + github.com/containerd/ttrpc v1.2.7 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.2.0 // indirect @@ -89,8 +90,8 @@ require ( github.com/docker/docker-credential-helpers v0.8.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect - github.com/getsentry/sentry-go v0.18.0 // indirect + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.1 // indirect github.com/go-logr/logr v1.4.2 // indirect @@ -110,7 +111,7 @@ require ( github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/greatroar/blobloom v0.7.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect @@ -152,7 +153,7 @@ require ( github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect github.com/opencontainers/runtime-spec v1.2.0 // indirect - github.com/pelletier/go-toml/v2 v2.0.8 // indirect + github.com/pelletier/go-toml/v2 v2.2.3 // indirect github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect github.com/pierrec/lz4/v4 v4.1.18 // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect @@ -160,7 +161,7 @@ require ( github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.12.0 // indirect + github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect @@ -177,21 +178,21 @@ require ( github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thejerf/suture/v4 v4.0.2 // indirect - github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184 // indirect + github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a // indirect github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect github.com/ulikunitz/xz v0.5.12 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect - github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.3 // indirect go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect - go.opentelemetry.io/otel v1.28.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect - go.opentelemetry.io/otel/metric v1.28.0 // indirect - go.opentelemetry.io/otel/sdk v1.28.0 // indirect - go.opentelemetry.io/otel/trace v1.28.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect + go.opentelemetry.io/otel v1.31.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect + go.opentelemetry.io/otel/metric v1.31.0 // indirect + go.opentelemetry.io/otel/sdk v1.31.0 // indirect + go.opentelemetry.io/otel/trace v1.31.0 // indirect go.opentelemetry.io/proto/otlp v1.3.1 // indirect golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect golang.org/x/net v0.34.0 // indirect @@ -201,9 +202,9 @@ require ( golang.org/x/tools v0.29.0 // indirect google.golang.org/api v0.155.0 // indirect google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect - google.golang.org/grpc v1.67.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect + google.golang.org/grpc v1.68.1 // indirect google.golang.org/protobuf v1.36.1 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect diff --git a/go.sum b/go.sum index ae6a1286d..59a4111b6 100644 --- a/go.sum +++ b/go.sum @@ -29,28 +29,92 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -58,12 +122,44 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -71,99 +167,362 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= @@ -173,33 +532,92 @@ cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3f cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= -github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 h1:59MxjQVfjXsBpLy+dbd2/ELV5ofnUkUZBvWSC85sheA= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 h1:dIScnXFlF784X79oi7MzVT6GWqr/W1uUt0pB5CsDs9M= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2/go.mod h1:gCLVsLfv1egrcZu+GoJATN5ts75F2s62ih/457eWzOw= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= @@ -213,11 +631,19 @@ github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00 github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092 h1:aM1rlcoLz8y5B2r4tTLMiVTrMtpfY0O8EScKJxaSaEc= github.com/anchore/go-struct-converter v0.0.0-20221118182256-c68fdcfa2092/go.mod h1:rYqSE9HbjzpHTI74vwPvae4ZVYZd1lue2ta6xHPdblA= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= @@ -233,13 +659,18 @@ github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= @@ -260,23 +691,25 @@ github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGX github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20 h1:N+3sFI5GUjRKBi+i0TxYVST9h4Ie192jJWpHvthBBgg= -github.com/cncf/xds/go v0.0.0-20240723142845-024c85f92f20/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= -github.com/cockroachdb/errors v1.11.1 h1:xSEW75zKaKCWzR3OfxXUxgrk/NtT4G1MiOv5lWZazG8= -github.com/cockroachdb/errors v1.11.1/go.mod h1:8MUxA3Gi6b25tYlFEBGLf+D8aISL+M4MIpiWMSNRfxw= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= +github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM= github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= @@ -285,16 +718,16 @@ github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.7.24 h1:zxszGrGjrra1yYJW/6rhm9cJ1ZQ8rkKBR48brqsa7nA= -github.com/containerd/containerd v1.7.24/go.mod h1:7QUzfURqZWCZV7RLNEn1XjUCQLEf0bkaK4GjUaZehxw= -github.com/containerd/containerd/api v1.7.19 h1:VWbJL+8Ap4Ju2mx9c9qS1uFSB1OVYr5JJrW2yT5vFoA= -github.com/containerd/containerd/api v1.7.19/go.mod h1:fwGavl3LNwAV5ilJ0sbrABL44AQxmNjDRcwheXDb6Ig= +github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= +github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= +github.com/containerd/containerd/v2 v2.0.2 h1:GmH/tRBlTvrXOLwSpWE2vNAm8+MqI6nmxKpKBNKY8Wc= +github.com/containerd/containerd/v2 v2.0.2/go.mod h1:wIqEvQ/6cyPFUGJ5yMFanspPabMLor+bF865OHvNTTI= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= -github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= -github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= +github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= +github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= @@ -303,16 +736,18 @@ github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Q github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/nydus-snapshotter v0.14.0 h1:6/eAi6d7MjaeLLuMO8Udfe5GVsDudmrDNO4SGETMBco= -github.com/containerd/nydus-snapshotter v0.14.0/go.mod h1:TT4jv2SnIDxEBu4H2YOvWQHPOap031ydTaHTuvc5VQk= -github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= -github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= -github.com/containerd/stargz-snapshotter v0.15.1 h1:fpsP4kf/Z4n2EYnU0WT8ZCE3eiKDwikDhL6VwxIlgeA= -github.com/containerd/stargz-snapshotter/estargz v0.15.1 h1:eXJjw9RbkLFgioVaTG+G/ZW/0kEe2oEKCdS/ZxIyoCU= -github.com/containerd/stargz-snapshotter/estargz v0.15.1/go.mod h1:gr2RNwukQ/S9Nv33Lt6UC7xEx58C+LHRdoqbEKjz1Kk= +github.com/containerd/nydus-snapshotter v0.15.0 h1:RqZRs1GPeM6T3wmuxJV9u+2Rg4YETVMwTmiDeX+iWC8= +github.com/containerd/nydus-snapshotter v0.15.0/go.mod h1:biq0ijpeZe0I5yZFSJyHzFSjjRZQ7P7y/OuHyd7hYOw= +github.com/containerd/platforms v1.0.0-rc.1 h1:83KIq4yy1erSRgOVHNk1HYdPvzdJ5CnsWaRoJX4C41E= +github.com/containerd/platforms v1.0.0-rc.1/go.mod h1:J71L7B+aiM5SdIEqmd9wp6THLVRzJGXfNuWCZCllLA4= +github.com/containerd/plugin v1.0.0 h1:c8Kf1TNl6+e2TtMHZt+39yAPDbouRH9WAToRjex483Y= +github.com/containerd/plugin v1.0.0/go.mod h1:hQfJe5nmWfImiqT1q8Si3jLv3ynMUIBB47bQ+KexvO8= +github.com/containerd/stargz-snapshotter v0.16.3 h1:zbQMm8dRuPHEOD4OqAYGajJJUwCeUzt4j7w9Iaw58u4= +github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8= +github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v1.2.5 h1:IFckT1EFQoFBMG4c3sMdT8EP3/aKfumK1msY+Ze4oLU= -github.com/containerd/ttrpc v1.2.5/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= +github.com/containerd/ttrpc v1.2.7 h1:qIrroQvuOL9HQ1X6KHe2ohc7p+HP/0VE6XPU7elJRqQ= +github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQrAbN1q9o= github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= @@ -345,25 +780,24 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v27.4.0-rc.2+incompatible h1:A0GZwegDlt2wdt3tpmrUzkVOZmbhvd7i05wPSf7Oo74= -github.com/docker/cli v27.4.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v27.5.0+incompatible h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM= +github.com/docker/cli v27.5.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v27.4.0-rc.2+incompatible h1:9OJjVGtelk/zGC3TyKweJ29b9Axzh0s/0vtU4mneumE= -github.com/docker/docker v27.4.0-rc.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.5.1+incompatible h1:4PYU5dnBYqRQi0294d1FBECqT9ECWeQAIfE8q4YnPY8= +github.com/docker/docker v27.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= @@ -378,23 +812,28 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= -github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= -github.com/getsentry/sentry-go v0.18.0 h1:MtBW5H9QgdcJabtZcuJG80BMOwaBpkRDZkxRkNC1sN0= -github.com/getsentry/sentry-go v0.18.0/go.mod h1:Kgon4Mby+FJ7ZWHFUAZgVaIa8sxHtnRJRLTXZr51aKQ= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= @@ -403,6 +842,11 @@ github.com/gliderlabs/ssh v0.3.8 h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c= github.com/gliderlabs/ssh v0.3.8/go.mod h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= @@ -414,6 +858,8 @@ github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0q github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -421,9 +867,12 @@ github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= @@ -431,7 +880,10 @@ github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeH github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -464,6 +916,7 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -471,6 +924,7 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -525,6 +979,8 @@ github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= @@ -536,6 +992,8 @@ github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99 github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= @@ -546,15 +1004,17 @@ github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWS github.com/greatroar/blobloom v0.7.2 h1:F30MGLHOcb4zr0pwCPTcKdlTM70rEgkf+LzdUPc5ss8= github.com/greatroar/blobloom v0.7.2/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 h1:bkypFPDjIYGfCYD5mRBvpqxfYX1YCS1PXdKYWi8FsN0= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0/go.mod h1:P+Lt/0by1T8bfcF3z737NnSbmxQAppXMRziHUxPOC8k= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.5 h1:dT58k9hQ/vbxNMwoI5+xFYAJuv6152UNvdHokfI5wE4= -github.com/hashicorp/go-getter v1.7.5/go.mod h1:W7TalhMmbPmsSMdNjD0ZskARur/9GJ17cfHTRtXV744= +github.com/hashicorp/go-getter v1.7.8 h1:mshVHx1Fto0/MydBekWan5zUipGq7jO0novchgMmSiY= +github.com/hashicorp/go-getter v1.7.8/go.mod h1:2c6CboOEb9jG6YvmC9xdD+tyAFsrUaJPedwXDGr0TM4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= @@ -568,6 +1028,7 @@ github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyf github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/in-toto/in-toto-golang v0.9.0 h1:tHny7ac4KgtsfrG6ybU8gVOZux2H8jN05AXJ9EBM1XU= @@ -584,15 +1045,21 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= @@ -604,6 +1071,7 @@ github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -613,10 +1081,14 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= @@ -630,6 +1102,9 @@ github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRC github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= @@ -644,8 +1119,8 @@ github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzC github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.18.2 h1:l86uBvxh4ntNoUUg3Y0eGTbKg1PbUh6tawJ4Xt75SpQ= -github.com/moby/buildkit v0.18.2/go.mod h1:vCR5CX8NGsPTthTg681+9kdmfvkvqJBXEv71GZe5msU= +github.com/moby/buildkit v0.19.0 h1:w9G1p7sArvCGNkpWstAqJfRQTXBKukMyMK1bsah1HNo= +github.com/moby/buildkit v0.19.0/go.mod h1:WiHBFTgWV8eB1AmPxIWsAlKjUACAwm3X/14xOV4VWew= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= @@ -668,8 +1143,8 @@ github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85 github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= @@ -725,16 +1200,22 @@ github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/ github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.8 h1:0ctb6s9mE31h0/lhu+J6OPmVeDxJn+kYnJc2jZR9tGQ= -github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= +github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 h1:W04oB3d0J01W5jgYRGKsV8LCM6g9EkCvPkZcmFuy0OE= github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= @@ -746,6 +1227,7 @@ github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsK github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= @@ -757,9 +1239,11 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig= github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.20.2 h1:5ctymQzZlyOON1666svgwn3s6IKWgfbjsejTMiXIyjg= -github.com/prometheus/client_golang v1.20.2/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= +github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= @@ -767,18 +1251,22 @@ github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXH github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= -github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= @@ -811,6 +1299,9 @@ github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5 github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/tools-golang v0.5.3 h1:ialnHeEYUC4+hkm5vJm4qz2x+oEJbS0mAMFrNXdQraY= github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= @@ -848,6 +1339,7 @@ github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= github.com/syncthing/syncthing v1.23.7 h1:PaHKBN4C+qaam9vtMV0qjwMBywAuyVtxmQ7vbBrV0Rw= github.com/syncthing/syncthing v1.23.7/go.mod h1:9f9139UzZ/llx16dP3x1XtID87IhOorEbHHrTDjNhQs= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -857,8 +1349,8 @@ github.com/thejerf/suture/v4 v4.0.2 h1:VxIH/J8uYvqJY1+9fxi5GBfGRkRZ/jlSOP6x9HijF github.com/thejerf/suture/v4 v4.0.2/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= -github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184 h1:RgyoSI38Y36zjQaszel/0RAcIehAnjA1B0RiUV9SDO4= -github.com/tonistiigi/fsutil v0.0.0-20241121093142-31cf1f437184/go.mod h1:Dl/9oEjK7IqnjAm21Okx/XIxUCFJzvh+XdVHUlBwXTw= +github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a h1:EfGw4G0x/8qXWgtcZ6KVaPS+wpWOQMaypczzP8ojkMY= +github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a/go.mod h1:Dl/9oEjK7IqnjAm21Okx/XIxUCFJzvh+XdVHUlBwXTw= github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 h1:7I5c2Ig/5FgqkYOh/N87NzoyI9U15qUPXhDD8uCupv8= github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= @@ -870,24 +1362,27 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.25.7 h1:VAzn5oq403l5pHjc4OhD54+XGO9cdKVL/7lDjF+iKUs= -github.com/urfave/cli/v2 v2.25.7/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= +github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= -github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -897,25 +1392,27 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 h1:SpGay3w+nEwMpfVnbqOLH5gY52/foP8RE8UzTZ1pdSE= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1/go.mod h1:4UoMYEZOC0yN/sPGH76KPkkU7zgiEWYWL9vwmbnTJPE= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 h1:gbhw/u49SS3gkPWiYweQNJGm/uJN5GkI/FrosxSHT7A= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1/go.mod h1:GnOaBaFQ2we3b9AGWJpsBa7v1S5RlQzlC3O7dRMxZhM= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 h1:4K4tsIXefpVJtvA/8srF4V4y0akAoPHkIslgAkjixJA= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0/go.mod h1:jjdQuTGVsXV4vSs+CJ2qYDeDPf9yIJV23qlIzBm73Vg= -go.opentelemetry.io/otel v1.28.0 h1:/SqNcYk+idO0CxKEUOtKQClMK/MimZihKYMruSMViUo= -go.opentelemetry.io/otel v1.28.0/go.mod h1:q68ijF8Fc8CnMHKyzqL6akLO46ePnjkgfIMIjUIX9z4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 h1:3Q/xZUyC1BBkualc9ROb4G8qkH90LXEIICcs5zv1OYY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0/go.mod h1:s75jGIWA9OfCMzF0xr+ZgfrB5FEbbV7UuYo32ahUiFI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0 h1:j9+03ymgYhPKmeXGk5Zu+cIZOlVzd9Zv7QIiyItjFBU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.28.0/go.mod h1:Y5+XiUG4Emn1hTfciPzGPJaSI+RpDts6BnCIir0SLqk= -go.opentelemetry.io/otel/metric v1.28.0 h1:f0HGvSl1KRAU1DLgLGFjrwVyismPlnuU6JD6bOeuA5Q= -go.opentelemetry.io/otel/metric v1.28.0/go.mod h1:Fb1eVBFZmLVTMb6PPohq3TO9IIhUisDsbJoL/+uQW4s= -go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= -go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/trace v1.28.0 h1:GhQ9cUuQGmNDd5BTCP2dAvv75RdMxEfTmYejp+lkx9g= -go.opentelemetry.io/otel/trace v1.28.0/go.mod h1:jPyXzNPg6da9+38HEwElrQiHlVMTnVfM3/yv2OlIHaI= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 h1:4BZHA+B1wXEQoGNHxW8mURaLhcdGwvRnmhGbm+odRbc= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0/go.mod h1:3qi2EEwMgB4xnKgPLqsDP3j9qxnHDZeHsnAxfjQqTko= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= +go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= +go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= +go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= +go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= +go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= +go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= +go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd h1:Uo/x0Ir5vQJ+683GXB9Ug+4fcjsbp7z7Ul8UaZbhsRM= @@ -923,29 +1420,50 @@ go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1dr golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -969,7 +1487,15 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1012,6 +1538,8 @@ golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLd golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= @@ -1023,8 +1551,20 @@ golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1050,8 +1590,12 @@ golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7Lm golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.1.0/go.mod h1:G9FE4dLTsbXUu90h/Pf85g4w1D+SSAgR+q46nJZ8M4A= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1067,7 +1611,12 @@ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1095,6 +1644,7 @@ golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1122,6 +1672,7 @@ golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1136,8 +1687,11 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1156,19 +1710,36 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1180,17 +1751,31 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -1204,6 +1789,7 @@ golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1233,6 +1819,7 @@ golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -1245,7 +1832,13 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1257,6 +1850,14 @@ golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNq golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -1304,7 +1905,16 @@ google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaE google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -1384,6 +1994,7 @@ google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2 google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= @@ -1416,13 +2027,41 @@ google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53B google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221025140454-527a21cfbd71/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142 h1:wKguEg1hsxI2/L3hUYrpo1RVi48K+uTyzKqprwLXsb8= -google.golang.org/genproto/googleapis/api v0.0.0-20240814211410-ddb44dafa142/go.mod h1:d6be+8HhtEtucleCbxpPW9PA9XwISACu8nvpPqF0BVo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= +google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -1450,6 +2089,7 @@ google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnD google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= @@ -1459,8 +2099,13 @@ google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACu google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.67.0 h1:IdH9y6PF5MPSdAntIcpjQ+tXO41pcQsfZV2RxtQgVcw= -google.golang.org/grpc v1.67.0/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -1477,6 +2122,9 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -1516,6 +2164,48 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +tags.cncf.io/container-device-interface v0.8.0 h1:8bCFo/g9WODjWx3m6EYl3GfUG31eKJbaggyBDxEldRc= +tags.cncf.io/container-device-interface v0.8.0/go.mod h1:Apb7N4VdILW0EVdEMRYXIDVRZfNJZ+kmEUss2kRRQ6Y= +tags.cncf.io/container-device-interface/specs-go v0.8.0 h1:QYGFzGxvYK/ZLMrjhvY0RjpUavIn4KcmRmVP/JjdBTA= +tags.cncf.io/container-device-interface/specs-go v0.8.0/go.mod h1:BhJIkjjPh4qpys+qm4DAYtUyryaTDg9zris+AczXyws= diff --git a/pkg/app/app.go b/pkg/app/app.go index 068b7ace5..ea84fa730 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -61,7 +61,7 @@ func New() EnvdApp { &cli.StringFlag{ Name: flag.FlagBuildkitdImage, Usage: "docker image to use for buildkitd", - Value: "docker.io/moby/buildkit:v0.10.6", + Value: "docker.io/moby/buildkit:v0.19.0", Hidden: true, }, &cli.StringFlag{ diff --git a/pkg/app/debug.go b/pkg/app/debug.go index a0f4c27d3..297d51467 100644 --- a/pkg/app/debug.go +++ b/pkg/app/debug.go @@ -21,7 +21,6 @@ import ( var CommandDebug = &cli.Command{ Name: "debug", Category: CategoryOther, - Aliases: []string{"b"}, Usage: "Debug commands", Description: ``, From 6b49023fcc98d3b426e10595c11610884739ae30 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 7 Feb 2025 10:34:39 +0800 Subject: [PATCH 329/355] feat: upgrade to micromamba2 (#1971) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/conda.go | 4 ++-- pkg/lang/ir/v1/python.go | 15 +++++++-------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index d88ed9ee8..ee32c65b4 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -30,7 +30,7 @@ import ( const ( builderImage = "curlimages/curl:8.11.1" condaVersionDefault = "py311_24.11.1-0" - microMambaImage = "mambaorg/micromamba:1.0.0" + microMambaImage = "mambaorg/micromamba:2.0.6" condaRootPrefix = "/opt/conda" condaBinDir = "/opt/conda/bin" condaSourcePath = "/tmp/miniconda.sh" @@ -86,7 +86,7 @@ func (g generalGraph) condaCommandPath() string { func (g generalGraph) condaInitShell(shell string) string { path := g.condaCommandPath() if g.CondaConfig.UseMicroMamba { - return fmt.Sprintf("%s shell init -p %s -s %s", path, condaRootPrefix, shell) + return fmt.Sprintf("%s shell init -s %s %s", path, shell, condaRootPrefix) } return fmt.Sprintf("%s init %s", path, shell) } diff --git a/pkg/lang/ir/v1/python.go b/pkg/lang/ir/v1/python.go index 10e402b55..ef53f73e4 100644 --- a/pkg/lang/ir/v1/python.go +++ b/pkg/lang/ir/v1/python.go @@ -91,14 +91,13 @@ func (g generalGraph) getAppropriatePythonVersion() (string, error) { func (g generalGraph) compileAlternative(root llb.State) llb.State { envdPrefix := "/opt/conda/envs/envd/bin" run := root. - Run(llb.Shlexf("update-alternatives --install /usr/bin/python python %s/python 1", envdPrefix), - llb.WithCustomName("[internal] update alternative python to envd")). - Run(llb.Shlexf("update-alternatives --install /usr/bin/python3 python3 %s/python3 1", envdPrefix), - llb.WithCustomName("[internal] update alternative python3 to envd")). - Run(llb.Shlexf("update-alternatives --install /usr/bin/pip pip %s/pip 1", envdPrefix), - llb.WithCustomName("[internal] update alternative pip to envd")). - Run(llb.Shlexf("update-alternatives --install /usr/bin/pip3 pip3 %s/pip3 1", envdPrefix), - llb.WithCustomName("[internal] update alternative pip3 to envd")) + Run(llb.Shlexf(`sh -c " + update-alternatives --install /usr/bin/python python %[1]s/python 1 && + update-alternatives --install /usr/bin/python3 python3 %[1]s/python3 1 && + update-alternatives --install /usr/bin/pip pip %[1]s/pip 1 && + update-alternatives --install /usr/bin/pip3 pip3 %[1]s/pip3 1 + "`, envdPrefix), + llb.WithCustomName("[internal] update alternative python/python3/pip/pip3 to envd")) return run.Root() } From 698349a70c4bc69d45af16bc2daab6472d3e7718 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 7 Feb 2025 10:54:22 +0800 Subject: [PATCH 330/355] docs: update the v0 & v1 envd reference (#1969) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- envd/api/v0/__init__.py | 6 ++++++ envd/api/v0/config.py | 6 ++++++ envd/api/v0/install.py | 6 ++++++ envd/api/v0/io.py | 6 ++++++ envd/api/v0/runtime.py | 6 ++++++ envd/api/v1/__init__.py | 6 ------ envd/api/v1/config.py | 6 ------ envd/api/v1/install.py | 6 ------ envd/api/v1/io.py | 6 ------ envd/api/v1/runtime.py | 6 ------ 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/envd/api/v0/__init__.py b/envd/api/v0/__init__.py index 6e4750fd1..977619ba6 100644 --- a/envd/api/v0/__init__.py +++ b/envd/api/v0/__init__.py @@ -19,6 +19,12 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: + +::: warning +v0 syntax is no longer supported from `envd>=v1.0`. Check the [upgrade guide](https://envd.tensorchord.ai/guide/v1.html). + +If you want to use v0 syntax, try `pip install 'envd<1'`. +::: """ from typing import List, Optional diff --git a/envd/api/v0/config.py b/envd/api/v0/config.py index de9180a96..4595d641a 100644 --- a/envd/api/v0/config.py +++ b/envd/api/v0/config.py @@ -19,6 +19,12 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: + +::: warning +v0 syntax is no longer supported from `envd>=v1.0`. Check the [upgrade guide](https://envd.tensorchord.ai/guide/v1.html). + +If you want to use v0 syntax, try `pip install 'envd<1'`. +::: """ from typing import List, Optional diff --git a/envd/api/v0/install.py b/envd/api/v0/install.py index 04d2160a0..a9ab7cab7 100644 --- a/envd/api/v0/install.py +++ b/envd/api/v0/install.py @@ -19,6 +19,12 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: + +::: warning +v0 syntax is no longer supported from `envd>=v1.0`. Check the [upgrade guide](https://envd.tensorchord.ai/guide/v1.html). + +If you want to use v0 syntax, try `pip install 'envd<1'`. +::: """ from typing import List, Optional diff --git a/envd/api/v0/io.py b/envd/api/v0/io.py index 8c1ac67b5..9c40889e6 100644 --- a/envd/api/v0/io.py +++ b/envd/api/v0/io.py @@ -19,6 +19,12 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: + +::: warning +v0 syntax is no longer supported from `envd>=v1.0`. Check the [upgrade guide](https://envd.tensorchord.ai/guide/v1.html). + +If you want to use v0 syntax, try `pip install 'envd<1'`. +::: """ from typing import Optional diff --git a/envd/api/v0/runtime.py b/envd/api/v0/runtime.py index 081ab2bcd..c979536e4 100644 --- a/envd/api/v0/runtime.py +++ b/envd/api/v0/runtime.py @@ -19,6 +19,12 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: + +::: warning +v0 syntax is no longer supported from `envd>=v1.0`. Check the [upgrade guide](https://envd.tensorchord.ai/guide/v1.html). + +If you want to use v0 syntax, try `pip install 'envd<1'`. +::: """ from typing import Dict, List, Optional diff --git a/envd/api/v1/__init__.py b/envd/api/v1/__init__.py index d51c6f86f..96e7aef16 100644 --- a/envd/api/v1/__init__.py +++ b/envd/api/v1/__init__.py @@ -19,12 +19,6 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: - -::: warning -Enable v1 by adding `# syntax=v1` to the 1st line of your envd file. - -v1 is experimental and may change in the future. Make sure to freeze the envd version for online CI/CD. -::: """ from typing import List, Optional diff --git a/envd/api/v1/config.py b/envd/api/v1/config.py index 55de8dd58..92788464e 100644 --- a/envd/api/v1/config.py +++ b/envd/api/v1/config.py @@ -19,12 +19,6 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: - -::: warning -Enable v1 by adding `# syntax=v1` to the 1st line of your envd file. - -v1 is experimental and may change in the future. Make sure to freeze the envd version for online CI/CD. -::: """ from typing import List, Optional diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index 8ffebfb86..9cd3dbc69 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -19,12 +19,6 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: - -::: warning -Enable v1 by adding `# syntax=v1` to the 1st line of your envd file. - -v1 is experimental and may change in the future. Make sure to freeze the envd version for online CI/CD. -::: """ from typing import Optional, Sequence diff --git a/envd/api/v1/io.py b/envd/api/v1/io.py index a9ddb4085..0b3fb5b46 100644 --- a/envd/api/v1/io.py +++ b/envd/api/v1/io.py @@ -19,12 +19,6 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: - -::: warning -Enable v1 by adding `# syntax=v1` to the 1st line of your envd file. - -v1 is experimental and may change in the future. Make sure to freeze the envd version for online CI/CD. -::: """ from typing import Optional diff --git a/envd/api/v1/runtime.py b/envd/api/v1/runtime.py index b38648da2..081ab2bcd 100644 --- a/envd/api/v1/runtime.py +++ b/envd/api/v1/runtime.py @@ -19,12 +19,6 @@ in [tensorchord/envd](https://github.com/tensorchord/envd/tree/main/envd/api) repo. Please update the python file there instead of directly editing file inside envd-docs repo. ::: - -::: warning -Enable v1 by adding `# syntax=v1` to the 1st line of your envd file. - -v1 is experimental and may change in the future. Make sure to freeze the envd version for online CI/CD. -::: """ from typing import Dict, List, Optional From 2b3a8d184acaaf286c56ada79cd2e3c5bd646c6c Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 7 Feb 2025 11:02:04 +0800 Subject: [PATCH 331/355] fix: goreleaser config, bump to v6 (#1973) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 6 +++--- .goreleaser.yaml | 3 ++- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f20ee6aff..d3068bfa3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,10 +23,10 @@ jobs: username: ${{ secrets.DOCKERIO_USERNAME }} password: ${{ secrets.DOCKERIO_TOKEN }} - name: Run GoReleaser - uses: goreleaser/goreleaser-action@v4 + uses: goreleaser/goreleaser-action@v6 with: distribution: goreleaser - version: latest + version: "~> v2" args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -170,7 +170,7 @@ jobs: tag_suffix: "" - build_func: build_gpu_11_6 tag_suffix: "-cuda-11.6.2-cudnn-8" - needs: image_publish + needs: goreleaser steps: - uses: actions/checkout@v4 - name: Set up Docker Buildx diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 2fc981a3e..66c25efd0 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,5 +1,6 @@ # This is an example .goreleaser.yml file with some sensible defaults. # Make sure to check the documentation at https://goreleaser.com +version: 2 before: hooks: - go mod tidy @@ -60,7 +61,7 @@ archives: checksum: name_template: 'checksums.txt' snapshot: - name_template: "{{ incpatch .Version }}-next" + version_template: "{{ incpatch .Version }}-next" changelog: use: github sort: asc From 37cb376765bc0fda72d862f9285c1f68388d6e42 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sat, 8 Feb 2025 07:11:29 +0800 Subject: [PATCH 332/355] fix: use buildkit container builder to export cache (#1975) * fix: use buildkit container builder to export cache Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/workflows/release.yml | 4 +-- README.md | 4 +-- .../build-and-push-remote-cache.sh | 1 + base-images/remote-cache/build.envd | 30 +++++-------------- pkg/app/build.go | 2 +- pkg/app/up.go | 2 +- pkg/builder/build.go | 1 - pkg/lang/ir/v1/r.go | 1 - pkg/lang/version/version.go | 2 +- pkg/types/envd.go | 2 ++ 10 files changed, 17 insertions(+), 32 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3068bfa3..1c2c3e66a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -168,8 +168,8 @@ jobs: include: - build_func: build tag_suffix: "" - - build_func: build_gpu_11_6 - tag_suffix: "-cuda-11.6.2-cudnn-8" + - build_func: build_gpu_11_8 + tag_suffix: "-cuda-11.8.0-cudnn-8" needs: goreleaser steps: - uses: actions/checkout@v4 diff --git a/README.md b/README.md index 1dce39f4f..69aee51f5 100644 --- a/README.md +++ b/README.md @@ -260,10 +260,10 @@ NAME JUPYTER SSH TARGET CONTEXT envd-quick-start http://localhost:42779 envd-quick-start.envd /home/gaocegege/code/envd-quick-start envd-quick-start:dev false <none> <none> Up 54 seconds bd3f6a729e94 ``` -## Difference between v0 and v1 +## Difference between v0 and v1 syntax > [!NOTE] -> Start from `envd v1.0`, `v1` syntax is the default syntax for `build.envd` file. +> Start from `envd v1.0`, `v1` syntax is the default syntax for `build.envd` file, and `moby-worker` is the default builder. | Features | v0 | v1 | | --- | --- | --- | diff --git a/base-images/remote-cache/build-and-push-remote-cache.sh b/base-images/remote-cache/build-and-push-remote-cache.sh index a48ce7a76..15c804e02 100755 --- a/base-images/remote-cache/build-and-push-remote-cache.sh +++ b/base-images/remote-cache/build-and-push-remote-cache.sh @@ -26,6 +26,7 @@ TAG_SUFFIX="${TAG_SUFFIX:-}" cd ${ROOT_DIR} +envd context create --name docker --builder docker-container --use envd --debug build -f build.envd:${BUILD_FUNC} --export-cache type=registry,ref=docker.io/${DOCKER_HUB_ORG}/python-cache:envd-v${ENVD_VERSION}${TAG_SUFFIX} --force cd - > /dev/null diff --git a/base-images/remote-cache/build.envd b/base-images/remote-cache/build.envd index 53a884ff2..af5d40e3f 100644 --- a/base-images/remote-cache/build.envd +++ b/base-images/remote-cache/build.envd @@ -5,40 +5,24 @@ def build(): install.python() -def build_gpu_11_2(): - """tensorflow""" - base(dev=True) - install.conda() - install.python() - install.cuda(version="11.2.2", cudnn="8") - - -def build_gpu_11_3(): - """pytorch""" - base(dev=True) - install.conda() - install.python() - install.cuda(version="11.3.1", cudnn="8") - - -def build_gpu_11_6(): - """pytorch""" +def build_gpu_11_8(): + """cuda 11""" base(dev=True) install.conda() install.python() - install.cuda(version="11.6.2", cudnn="8") + install.cuda(version="11.8.0", cudnn="8") -def build_gpu_11_8(): - """pytorch""" +def build_gpu_12_2(): + """cuda 12""" base(dev=True) install.conda() install.python() - install.cuda(version="11.8.0", cudnn="8") + install.cuda(version="12.2.2", cudnn="8") def build_gpu_12_3(): - """pytorch""" + """cudnn 9""" base(dev=True) install.conda() install.python() diff --git a/pkg/app/build.go b/pkg/app/build.go index c42d0d7da..2e08218a4 100644 --- a/pkg/app/build.go +++ b/pkg/app/build.go @@ -83,7 +83,7 @@ To build and push the image to a registry: // https://github.com/urfave/cli/issues/1134#issuecomment-1191407527 &cli.StringFlag{ Name: "export-cache", - Usage: "Export the cache (e.g. `type=registry,ref=<image>`)", + Usage: "Export the cache (e.g. `type=registry,ref=<image>`). The default `moby-worker` builder doesn't support this unless the docker-ce has enabled the `containerd` image store. You can run `envd context create --name docker --builder docker-container --use` to use this feature.", Aliases: []string{"ec"}, }, &cli.StringFlag{ diff --git a/pkg/app/up.go b/pkg/app/up.go index 8406b2296..45ab926ee 100644 --- a/pkg/app/up.go +++ b/pkg/app/up.go @@ -145,7 +145,7 @@ var CommandUp = &cli.Command{ // https://github.com/urfave/cli/issues/1134#issuecomment-1191407527 &cli.StringFlag{ Name: "export-cache", - Usage: "Export the cache (e.g. `type=registry,ref=<image>`)", + Usage: "Export the cache (e.g. `type=registry,ref=<image>`). The default `moby-worker` builder doesn't support this unless the docker-ce has enabled the `containerd` image store. You can run `envd context create --name docker --builder docker-container --use` to use this feature.", Aliases: []string{"ec"}, }, &cli.StringFlag{ diff --git a/pkg/builder/build.go b/pkg/builder/build.go index 49faaf44c..d2133c536 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -228,7 +228,6 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err if err != nil { return errors.Wrap(err, "failed to parse export cache") } - // k := platforms.Format(platforms.DefaultSpec()) ctx, cancel := context.WithCancel(ctx) defer cancel() eg, ctx := errgroup.WithContext(ctx) diff --git a/pkg/lang/ir/v1/r.go b/pkg/lang/ir/v1/r.go index 5527afc75..9f82de269 100644 --- a/pkg/lang/ir/v1/r.go +++ b/pkg/lang/ir/v1/r.go @@ -26,7 +26,6 @@ const rPath = "/usr/local/lib/R/site-library" func (g *generalGraph) installRLang(root llb.State) llb.State { g.UserDirectories = append(g.UserDirectories, rPath) prepare := root.Run(llb.Shlex(`sh -c " -apt-get update && apt-get install -y --no-install-recommends --fix-missing gpg && wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | gpg --dearmor -o /usr/share/keyrings/r-project.gpg && echo "deb [signed-by=/usr/share/keyrings/r-project.gpg] https://cloud.r-project.org/bin/linux/ubuntu jammy-cran40/" | tee -a /etc/apt/sources.list.d/r-project.list "`), llb.WithCustomName("add R public GPG key")).Root() diff --git a/pkg/lang/version/version.go b/pkg/lang/version/version.go index 980c68bec..3818ae68f 100644 --- a/pkg/lang/version/version.go +++ b/pkg/lang/version/version.go @@ -85,7 +85,7 @@ func New(file string) (Getter, error) { } else if strings.Contains(comment, "# syntax=v0") { logrus.Fatal("v0 is no longer supported in envd v1, try to use v1") } else { - logrus.Debug("unknown version, using v0 by default") + logrus.Debug("unknown version, using v1 by default") } g.v = V1 return g, nil diff --git a/pkg/types/envd.go b/pkg/types/envd.go index 16b78336b..1b850c57b 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -57,6 +57,7 @@ var BaseEnvironment = []struct { {"PATH", DefaultSystemPath}, {"LANG", "en_US.UTF-8"}, {"LC_ALL", "en_US.UTF-8"}, + {"UV_LINK_MODE", "copy"}, // uv link-mode for installing Python packages } var BaseAptPackage = []string{ "bash-static", @@ -82,6 +83,7 @@ var BaseAptPackage = []string{ "make", "zsh", "locales", + "gpg", // used by r-lang } type EnvdImage struct { From 63a09712e9d3d2b698b2a2fd9a27617639f693a3 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 10 Feb 2025 15:15:51 +0800 Subject: [PATCH 333/355] fix: use ubuntu 22.04 mirror (#1980) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- e2e/docs/testdata/complex/build.envd | 18 +++++++++--------- envd/api/v0/config.py | 18 +++++++++--------- envd/api/v1/config.py | 18 +++++++++--------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/e2e/docs/testdata/complex/build.envd b/e2e/docs/testdata/complex/build.envd index 2dccf6d93..5b73572af 100644 --- a/e2e/docs/testdata/complex/build.envd +++ b/e2e/docs/testdata/complex/build.envd @@ -8,15 +8,15 @@ def build(): install.python() config.apt_source( source=""" -deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted -deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted -deb https://mirror.sjtu.edu.cn/ubuntu focal universe -deb https://mirror.sjtu.edu.cn/ubuntu focal-updates universe -deb https://mirror.sjtu.edu.cn/ubuntu focal multiverse -deb https://mirror.sjtu.edu.cn/ubuntu focal-updates multiverse -deb https://mirror.sjtu.edu.cn/ubuntu focal-backports main restricted universe multiverse -deb http://archive.canonical.com/ubuntu focal partner -deb https://mirror.sjtu.edu.cn/ubuntu focal-security main restricted universe multiverse +deb https://mirror.sjtu.edu.cn/ubuntu jammy main restricted +deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates main restricted +deb https://mirror.sjtu.edu.cn/ubuntu jammy universe +deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates universe +deb https://mirror.sjtu.edu.cn/ubuntu jammy multiverse +deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates multiverse +deb https://mirror.sjtu.edu.cn/ubuntu jammy-backports main restricted universe multiverse +deb http://archive.canonical.com/ubuntu jammy partner +deb https://mirror.sjtu.edu.cn/ubuntu jammy-security main restricted universe multiverse """ ) config.pip_index(url="https://mirror.sjtu.edu.cn/pypi/web/simple") diff --git a/envd/api/v0/config.py b/envd/api/v0/config.py index 4595d641a..a3aa9339c 100644 --- a/envd/api/v0/config.py +++ b/envd/api/v0/config.py @@ -36,15 +36,15 @@ def apt_source(source: Optional[str]): Example usage: ```python apt_source(source=''' - deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted - deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted - deb https://mirror.sjtu.edu.cn/ubuntu focal universe - deb https://mirror.sjtu.edu.cn/ubuntu focal-updates universe - deb https://mirror.sjtu.edu.cn/ubuntu focal multiverse - deb https://mirror.sjtu.edu.cn/ubuntu focal-updates multiverse - deb https://mirror.sjtu.edu.cn/ubuntu focal-backports main restricted universe multiverse - deb http://archive.canonical.com/ubuntu focal partner - deb https://mirror.sjtu.edu.cn/ubuntu focal-security main restricted universe multiverse + deb https://mirror.sjtu.edu.cn/ubuntu jammy main restricted + deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates main restricted + deb https://mirror.sjtu.edu.cn/ubuntu jammy universe + deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates universe + deb https://mirror.sjtu.edu.cn/ubuntu jammy multiverse + deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates multiverse + deb https://mirror.sjtu.edu.cn/ubuntu jammy-backports main restricted universe multiverse + deb http://archive.canonical.com/ubuntu jammy partner + deb https://mirror.sjtu.edu.cn/ubuntu jammy-security main restricted universe multiverse ''') ``` diff --git a/envd/api/v1/config.py b/envd/api/v1/config.py index 92788464e..478e82972 100644 --- a/envd/api/v1/config.py +++ b/envd/api/v1/config.py @@ -30,15 +30,15 @@ def apt_source(source: Optional[str]): Example usage: ```python apt_source(source=''' - deb https://mirror.sjtu.edu.cn/ubuntu focal main restricted - deb https://mirror.sjtu.edu.cn/ubuntu focal-updates main restricted - deb https://mirror.sjtu.edu.cn/ubuntu focal universe - deb https://mirror.sjtu.edu.cn/ubuntu focal-updates universe - deb https://mirror.sjtu.edu.cn/ubuntu focal multiverse - deb https://mirror.sjtu.edu.cn/ubuntu focal-updates multiverse - deb https://mirror.sjtu.edu.cn/ubuntu focal-backports main restricted universe multiverse - deb http://archive.canonical.com/ubuntu focal partner - deb https://mirror.sjtu.edu.cn/ubuntu focal-security main restricted universe multiverse + deb https://mirror.sjtu.edu.cn/ubuntu jammy main restricted + deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates main restricted + deb https://mirror.sjtu.edu.cn/ubuntu jammy universe + deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates universe + deb https://mirror.sjtu.edu.cn/ubuntu jammy multiverse + deb https://mirror.sjtu.edu.cn/ubuntu jammy-updates multiverse + deb https://mirror.sjtu.edu.cn/ubuntu jammy-backports main restricted universe multiverse + deb http://archive.canonical.com/ubuntu jammy partner + deb https://mirror.sjtu.edu.cn/ubuntu jammy-security main restricted universe multiverse ''') ``` From 9065cd38a05d326f1cd48da9089117dd49bb28c7 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 11 Feb 2025 09:59:21 +0800 Subject: [PATCH 334/355] fix: julia docs test (#1981) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- e2e/docs/testdata/julia_mnist/build.envd | 1 + e2e/docs/testdata/julia_mnist/mlp_mnist.jl | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/e2e/docs/testdata/julia_mnist/build.envd b/e2e/docs/testdata/julia_mnist/build.envd index 67440e761..d8ee4b08a 100644 --- a/e2e/docs/testdata/julia_mnist/build.envd +++ b/e2e/docs/testdata/julia_mnist/build.envd @@ -6,3 +6,4 @@ def build(): install.julia() install.julia_packages(name=["Flux", "MLDatasets"]) runtime.command(commands={"julia-mnist": "julia mlp_mnist.jl"}) + runtime.environ(env={"DATADEPS_ALWAYS_ACCEPT": "true"}) diff --git a/e2e/docs/testdata/julia_mnist/mlp_mnist.jl b/e2e/docs/testdata/julia_mnist/mlp_mnist.jl index 050e6dd79..26e0e3cef 100644 --- a/e2e/docs/testdata/julia_mnist/mlp_mnist.jl +++ b/e2e/docs/testdata/julia_mnist/mlp_mnist.jl @@ -68,9 +68,9 @@ train_loader = simple_loader(train_data, batchsize = 256) opt_state = Flux.setup(Adam(3e-4), model); -# Then train for 10 epochs, printing out details as we go: +# Then train for 3 epochs, printing out details as we go: -for epoch in 1:10 +for epoch in 1:3 loss = 0.0 for (x, y) in train_loader # Compute the loss and the gradients: From 9778c843685743e2c8f15af4b1c10d8eac4fe0dc Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 17 Feb 2025 22:14:49 +0800 Subject: [PATCH 335/355] chore: sort git tag by date when multiple tags bind to one commit (#1984) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .goreleaser.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 66c25efd0..a460377a9 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,6 +1,9 @@ # This is an example .goreleaser.yml file with some sensible defaults. # Make sure to check the documentation at https://goreleaser.com version: 2 +git: + # if there are more than one tag in the same commit. + tag_sort: -version:creatordate before: hooks: - go mod tidy From 797fa19d2554355d4f8cb4e37dcf2e68d134ee33 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:31:11 +0800 Subject: [PATCH 336/355] docs: updated CHANGELOG.md (#1972) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: kemingy <12974685+kemingy@users.noreply.github.com> --- CHANGELOG.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 44cd5b2b7..1ecdfad6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,54 @@ # Changelog +## v1.0.1 (2025-02-17) + + +### Contributors + + +## v1.0.0-alpha.3 (2025-02-11) + + * [9065cd3](https://github.com/tensorchord/envd/commit/9065cd38a05d326f1cd48da9089117dd49bb28c7) fix: julia docs test (#1981) + * [63a0971](https://github.com/tensorchord/envd/commit/63a09712e9d3d2b698b2a2fd9a27617639f693a3) fix: use ubuntu 22.04 mirror (#1980) + * [37cb376](https://github.com/tensorchord/envd/commit/37cb376765bc0fda72d862f9285c1f68388d6e42) fix: use buildkit container builder to export cache (#1975) + +### Contributors + + * Keming + +## v1.0.0-alpha.2 (2025-02-07) + + * [2b3a8d1](https://github.com/tensorchord/envd/commit/2b3a8d184acaaf286c56ada79cd2e3c5bd646c6c) fix: goreleaser config, bump to v6 (#1973) + +### Contributors + + * Keming + +## v1.0.0-alpha.1 (2025-02-07) + + +### Contributors + + +## v1.0.0 (2025-02-11) + + * [9065cd3](https://github.com/tensorchord/envd/commit/9065cd38a05d326f1cd48da9089117dd49bb28c7) fix: julia docs test (#1981) + * [63a0971](https://github.com/tensorchord/envd/commit/63a09712e9d3d2b698b2a2fd9a27617639f693a3) fix: use ubuntu 22.04 mirror (#1980) + * [37cb376](https://github.com/tensorchord/envd/commit/37cb376765bc0fda72d862f9285c1f68388d6e42) fix: use buildkit container builder to export cache (#1975) + * [2b3a8d1](https://github.com/tensorchord/envd/commit/2b3a8d184acaaf286c56ada79cd2e3c5bd646c6c) fix: goreleaser config, bump to v6 (#1973) + * [6b49023](https://github.com/tensorchord/envd/commit/6b49023fcc98d3b426e10595c11610884739ae30) feat: upgrade to micromamba2 (#1971) + * [b53e06d](https://github.com/tensorchord/envd/commit/b53e06d4943c149594dfe1da52043febb51686c5) fix: envd cmd alias conflict, bump buildkit container version (#1970) + * [f747827](https://github.com/tensorchord/envd/commit/f74782795ed92c681516f1b25ec5b9ba5206e346) fix: r-lang in ubuntu:22.04 (#1967) + * [80d77e8](https://github.com/tensorchord/envd/commit/80d77e855203aecb34d0be0f0c9814c5636ab3ff) feat: upgrade julia to latest LTS version (#1966) + * [1519667](https://github.com/tensorchord/envd/commit/15196672f4a04417292a41edfd49cf364ca858de) feat: update examples to v1 syntax (#1965) + * [3bfd29a](https://github.com/tensorchord/envd/commit/3bfd29a18437b9cb7e6b47684be7a7d6da227202) feat: use moby context by default (#1964) + * [e32ab14](https://github.com/tensorchord/envd/commit/e32ab1455150bce2461168791a11ea416d33121f) feat: remove envd v0 (#1963) + * [307fdbd](https://github.com/tensorchord/envd/commit/307fdbda756887e2ba0acc09565965b4d7fe5865) fix: chown all the files for mamba under `/opt/conda` (#1961) + +### Contributors + + * Keming + ## v0.4.3 (2025-01-20) * [72e3b49](https://github.com/tensorchord/envd/commit/72e3b495ab776b5ba524217099ed7a2c88cbd909) fix(ci): release on ubuntu with wheels from previous steps (#1960) From 1089f98474ca85f453c90366acecf9f6a505aad0 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Fri, 7 Mar 2025 22:47:01 +0800 Subject: [PATCH 337/355] feat: support uv (#1990) * feat: support uv Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix ci Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- e2e/language/python_test.go | 20 +++++-- e2e/language/testdata/python/uv/build.envd | 12 +++++ envd/api/v1/install.py | 15 ++++++ .../frontend/starlark/v1/install/const.go | 1 + .../frontend/starlark/v1/install/install.go | 15 ++++++ pkg/lang/ir/types.go | 4 ++ pkg/lang/ir/v1/compile.go | 4 ++ pkg/lang/ir/v1/interface.go | 8 +++ pkg/lang/ir/v1/system.go | 11 ++-- pkg/lang/ir/v1/types.go | 1 + pkg/lang/ir/v1/util.go | 1 - pkg/lang/ir/v1/uv.go | 53 +++++++++++++++++++ pkg/metrics/docker_collector.go | 2 +- pkg/types/envd.go | 1 - 14 files changed, 133 insertions(+), 15 deletions(-) create mode 100644 e2e/language/testdata/python/uv/build.envd create mode 100644 pkg/lang/ir/v1/uv.go diff --git a/e2e/language/python_test.go b/e2e/language/python_test.go index bc07cd7d0..d9cb61456 100644 --- a/e2e/language/python_test.go +++ b/e2e/language/python_test.go @@ -16,14 +16,15 @@ package language import ( . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" "github.com/tensorchord/envd/e2e" ) var _ = Describe("python", Ordered, func() { + testcase := "e2e" It("Should build packages successfully", func() { exampleName := "python/packages" - testcase := "e2e" e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) e.BuildImage(true)() e.RunContainer()() @@ -31,7 +32,6 @@ var _ = Describe("python", Ordered, func() { }) It("Should build requirements successfully", func() { exampleName := "python/requirements" - testcase := "e2e" e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) e.BuildImage(true)() e.RunContainer()() @@ -39,7 +39,6 @@ var _ = Describe("python", Ordered, func() { }) It("Should build hybrid successfully", func() { exampleName := "python/hybrid" - testcase := "e2e" e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) e.BuildImage(true)() e.RunContainer()() @@ -48,7 +47,6 @@ var _ = Describe("python", Ordered, func() { It("Should build conda with channel successfully", func() { exampleName := "python/conda" - testcase := "e2e" e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) e.BuildImage(true)() e.RunContainer()() @@ -57,10 +55,22 @@ var _ = Describe("python", Ordered, func() { It("Should build conda with separate channel setting successfully", func() { exampleName := "python/conda_channel" - testcase := "e2e" e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) e.BuildImage(true)() e.RunContainer()() e.DestroyContainer()() }) + + Describe("Should build uv with Python successfully", func() { + exampleName := "python/uv" + e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) + BeforeAll(e.BuildImage(true)) + BeforeEach(e.RunContainer()) + It("Should have Python installed", func() { + res, err := e.ExecRuntimeCommand("uv-python") + Expect(err).To(BeNil()) + Expect(res).To(ContainSubstring("python")) + }) + AfterEach(e.DestroyContainer()) + }) }) diff --git a/e2e/language/testdata/python/uv/build.envd b/e2e/language/testdata/python/uv/build.envd new file mode 100644 index 000000000..03d500668 --- /dev/null +++ b/e2e/language/testdata/python/uv/build.envd @@ -0,0 +1,12 @@ +# syntax=v1 + + +def build(): + base(dev=True) + install.uv() + shell("fish") + runtime.command( + commands={ + "uv-python": "uv python list --only-installed", + } + ) diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index 9cd3dbc69..6fcee7bd5 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -43,6 +43,21 @@ def conda(use_mamba: bool = False): """ +def uv(python_version: str = "3.11"): + """Install UV (an extremely fast Python package and project manager). + + `uv` is much faster than `conda`. Choose this one instead of `conda` if you don't + need any machine learning packages. + + This doesn't support installing Python packages through `install.python_packages` + because that part should be managed by `uv`. You can run `uv sync` in the `envd` + environment to install all the dependencies. + + Args: + python_version (str): install this Python version through UV + """ + + def r_lang(): """Install R Lang.""" diff --git a/pkg/lang/frontend/starlark/v1/install/const.go b/pkg/lang/frontend/starlark/v1/install/const.go index 937d8fe49..37fde4941 100644 --- a/pkg/lang/frontend/starlark/v1/install/const.go +++ b/pkg/lang/frontend/starlark/v1/install/const.go @@ -18,6 +18,7 @@ const ( // language rulePython = "install.python" ruleConda = "install.conda" + ruleUV = "install.uv" ruleRLang = "install.r_lang" ruleJulia = "install.julia" diff --git a/pkg/lang/frontend/starlark/v1/install/install.go b/pkg/lang/frontend/starlark/v1/install/install.go index 3f0b46b25..2bd9c2b3e 100644 --- a/pkg/lang/frontend/starlark/v1/install/install.go +++ b/pkg/lang/frontend/starlark/v1/install/install.go @@ -34,6 +34,7 @@ var Module = &starlarkstruct.Module{ // language "python": starlark.NewBuiltin(rulePython, ruleFuncPython), "conda": starlark.NewBuiltin(ruleConda, ruleFuncConda), + "uv": starlark.NewBuiltin(ruleUV, ruleFuncUV), "r_lang": starlark.NewBuiltin(ruleRLang, ruleFuncRLang), "julia": starlark.NewBuiltin(ruleJulia, ruleFuncJulia), // packages @@ -77,6 +78,20 @@ func ruleFuncConda(thread *starlark.Thread, _ *starlark.Builtin, return starlark.None, nil } +func ruleFuncUV(thread *starlark.Thread, _ *starlark.Builtin, + args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + logger.Debugf("rule `%s` is invoked", ruleUV) + + pythonVersion := ir.PythonVersionDefault + + if err := starlark.UnpackArgs(ruleUV, args, kwargs, "python_version?", &pythonVersion); err != nil { + return nil, err + } + + ir.UV(pythonVersion) + return starlark.None, nil +} + func ruleFuncRLang(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { logger.Debugf("rule `%s` is invoked", ruleRLang) diff --git a/pkg/lang/ir/types.go b/pkg/lang/ir/types.go index f2a8f21a8..a0da2f1c2 100644 --- a/pkg/lang/ir/types.go +++ b/pkg/lang/ir/types.go @@ -61,6 +61,10 @@ type CondaConfig struct { UseMicroMamba bool } +type UVConfig struct { + PythonVersion string +} + type GitConfig struct { Name string Email string diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index a36a59781..e5e88bdf3 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -388,6 +388,10 @@ func (g *generalGraph) CompileLLB(uid, gid int) (llb.State, error) { return llb.State{}, errors.Wrap(err, "failed to compile shell") } prompt := g.compilePrompt(shell) + if g.UVConfig != nil { + // re-install uv Python for dev user + prompt = g.compileUVPython(prompt) + } entrypoint, err := g.compileEntrypoint(prompt) if err != nil { return llb.State{}, errors.Wrap(err, "failed to compile entrypoint") diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index 09354f378..95ecc6e6c 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -58,6 +58,14 @@ func Conda(mamba bool) { } } +func UV(pythonVersion string) { + g := DefaultGraph.(*generalGraph) + + g.UVConfig = &ir.UVConfig{ + PythonVersion: pythonVersion, + } +} + func RLang() { g := DefaultGraph.(*generalGraph) diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index c1ae9df0f..94288f5c4 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -61,10 +61,7 @@ func (g generalGraph) compileRun(root llb.State) llb.State { cmdStr := fmt.Sprintf("bash -c '%s'", sb.String()) logrus.WithField("command", cmdStr).Debug("compile run command") - // Mount the build context into the build process. - // TODO(gaocegege): Maybe we should make it readonly, - // but these cases then cannot be supported: - // run(commands=["git clone xx.git"]) + // mount host here is read-only run := root.Dir(workingDir).Run(llb.Shlex(cmdStr)) if execGroup.MountHost { run.AddMount(workingDir, llb.Local(flag.FlagBuildContext)) @@ -207,6 +204,9 @@ func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { channel := g.compileCondaChannel(pack) pack = g.compileCondaPackages(channel) } + if g.UVConfig != nil { + pack = g.compileUV(pack) + } for _, language := range g.Languages { switch language.Name { @@ -271,9 +271,6 @@ func (g *generalGraph) compileBaseImage() (llb.State, error) { if err != nil { return llb.State{}, errors.Wrapf(err, "failed to get the image config, check if the image(%s) exists", g.Image) } - if err != nil { - return llb.State{}, errors.Wrap(err, "failed to get the image metadata") - } // Set the environment variables to RuntimeEnviron to keep it in the resulting image. logger.Logger.Debugf("inherit envs from base image: %s", config.Env) diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 2a6f7073e..394cb0ed0 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -72,6 +72,7 @@ type generalGraph struct { *ir.JupyterConfig *ir.GitConfig *ir.CondaConfig + *ir.UVConfig *ir.RStudioServerConfig Writer compileui.Writer `json:"-"` diff --git a/pkg/lang/ir/v1/util.go b/pkg/lang/ir/v1/util.go index 660d7198a..d32547ee4 100644 --- a/pkg/lang/ir/v1/util.go +++ b/pkg/lang/ir/v1/util.go @@ -139,7 +139,6 @@ func GetDefaultGraphHash() string { // GetCUDAImage finds the correct CUDA base image // refer to https://hub.docker.com/r/nvidia/cuda/tags func GetCUDAImage(image string, cuda *string, cudnn string, dev bool) string { - // TODO: support CUDA 10 target := "runtime" if dev { target = "devel" diff --git a/pkg/lang/ir/v1/uv.go b/pkg/lang/ir/v1/uv.go new file mode 100644 index 000000000..768b98eac --- /dev/null +++ b/pkg/lang/ir/v1/uv.go @@ -0,0 +1,53 @@ +// Copyright 2025 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v1 + +import "github.com/moby/buildkit/client/llb" + +const ( + uvVersion = "0.6.5" +) + +func (g generalGraph) compileUV(root llb.State) llb.State { + if g.UVConfig == nil { + return root + } + // uv configurations + g.RuntimeEnviron["UV_LINK_MODE"] = "copy" + g.RuntimeEnviron["UV_PYTHON_PREFERENCE"] = "only-managed" + + base := llb.Image(builderImage) + builder := base.Run( + llb.Shlexf(`sh -c "wget -qO- https://github.com/astral-sh/uv/releases/download/%s/uv-$(uname -m)-unknown-linux-gnu.tar.gz | tar -xz --strip-components=1 -C /tmp || exit 1"`, uvVersion), + llb.WithCustomNamef("[internal] download uv %s", uvVersion), + ).Root() + + root = root.File( + llb.Copy(builder, "/tmp/uv", "/usr/bin/uv"), llb.WithCustomName("[internal] install uv")). + File(llb.Copy(builder, "/tmp/uvx", "/usr/bin/uvx"), llb.WithCustomName("[internal] install uvx")) + return g.compileUVPython(root) +} + +func (g generalGraph) compileUVPython(root llb.State) llb.State { + if g.UVConfig == nil { + return root + } + + root = root.Run( + llb.Shlexf(`uv python install %s`, g.UVConfig.PythonVersion), + llb.WithCustomNamef("[internal] install uv Python=%s", g.UVConfig.PythonVersion), + ).Root() + return root +} diff --git a/pkg/metrics/docker_collector.go b/pkg/metrics/docker_collector.go index 8fd523980..eb3a2e036 100644 --- a/pkg/metrics/docker_collector.go +++ b/pkg/metrics/docker_collector.go @@ -56,7 +56,7 @@ func (c *dockerCollector) Watch(ctx context.Context, cid string) chan Metrics { err := c.client.Stats(ctx, cid, stats, c.done) if err != nil { logrus.WithField("cid", cid). - WithError(err).Error("error occurred in dockerCollecter.Watch") + WithError(err).Error("error occurred in dockerCollector.Watch") } c.running = false }() diff --git a/pkg/types/envd.go b/pkg/types/envd.go index 1b850c57b..cc9d3fee1 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -57,7 +57,6 @@ var BaseEnvironment = []struct { {"PATH", DefaultSystemPath}, {"LANG", "en_US.UTF-8"}, {"LC_ALL", "en_US.UTF-8"}, - {"UV_LINK_MODE", "copy"}, // uv link-mode for installing Python packages } var BaseAptPackage = []string{ "bash-static", From 207c30ee9556bb6915996166507fbc81ec26309a Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Sun, 9 Mar 2025 08:32:13 +0800 Subject: [PATCH 338/355] feat: add pre-defined envd template (#1991) * feat: add pre-defined envd template Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/app.go | 1 + pkg/app/bootstrap.go | 3 + pkg/app/new.go | 160 ++++++++++++++++++++++++++++++++++++ pkg/app/template/conda.envd | 5 ++ pkg/app/template/julia.envd | 11 --- pkg/app/template/r.envd | 14 ---- pkg/app/template/torch.envd | 35 ++++++++ pkg/app/template/uv.envd | 4 + pkg/util/fileutil/file.go | 13 ++- 9 files changed, 218 insertions(+), 28 deletions(-) create mode 100644 pkg/app/new.go create mode 100644 pkg/app/template/conda.envd delete mode 100644 pkg/app/template/julia.envd delete mode 100644 pkg/app/template/r.envd create mode 100644 pkg/app/template/torch.envd create mode 100644 pkg/app/template/uv.envd diff --git a/pkg/app/app.go b/pkg/app/app.go index ea84fa730..a5aa1c1d8 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -99,6 +99,7 @@ func New() EnvdApp { CommandVersion, CommandTop, CommandReference, + CommandNew, } internalApp.CustomAppHelpTemplate = ` envd - Development environment for data science and AI/ML teams diff --git a/pkg/app/bootstrap.go b/pkg/app/bootstrap.go index a8294303e..982fb7824 100644 --- a/pkg/app/bootstrap.go +++ b/pkg/app/bootstrap.go @@ -106,6 +106,9 @@ func bootstrap(clicontext *cli.Context) error { }, { "buildkit", buildkit, + }, { + "add pre-defined templates", + addTemplates, }} total := len(stages) diff --git a/pkg/app/new.go b/pkg/app/new.go new file mode 100644 index 000000000..f694ca9ae --- /dev/null +++ b/pkg/app/new.go @@ -0,0 +1,160 @@ +// Copyright 2025 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package app + +import ( + _ "embed" + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/cockroachdb/errors" + "github.com/sirupsen/logrus" + cli "github.com/urfave/cli/v2" + + "github.com/tensorchord/envd/pkg/util/fileutil" +) + +var ( + //go:embed template/uv.envd + templateUV string + //go:embed template/conda.envd + templateConda string + //go:embed template/torch.envd + templateTorch string + + templates = map[string]string{ + "uv": templateUV, + "conda": templateConda, + "torch": templateTorch, + } +) + +func joinKeysToString(table map[string]string) string { + keys := make([]string, 0, len(table)) + for k := range table { + keys = append(keys, k) + } + return strings.Join(keys, ", ") +} + +func isDefaultTemplate(name string) bool { + _, ok := templates[name] + return ok +} + +var CommandNew = &cli.Command{ + Name: "new", + Category: CategoryBasic, + Aliases: []string{"n"}, + Usage: "Create a new `build.envd` file from pre-defined templates", + Description: `The template used by this command is stored in the + '$HOME/.config/envd/templates' directory, we provide some pre-defined templates for you + to use during 'envd bootstrap', you can also add your own templates to this directory.`, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "template", + Usage: fmt.Sprintf("Template name to use (`envd bootstrap` will add [%s])", joinKeysToString(templates)), + Aliases: []string{"t"}, + Required: true, + }, + &cli.BoolFlag{ + Name: "force", + Usage: "Overwrite the build.envd if existed", + Aliases: []string{"f"}, + Required: false, + }, + &cli.PathFlag{ + Name: "path", + Usage: "Path to the directory of the build.envd", + Aliases: []string{"p"}, + Value: ".", + }, + }, + Action: newCommand, +} + +func newCommand(clicontext *cli.Context) error { + workDir, err := filepath.Abs(clicontext.Path("path")) + if err != nil { + return errors.Wrap(err, "failed to get absolute path") + } + + force := clicontext.Bool("force") + filePath := filepath.Join(workDir, "build.envd") + exists, err := fileutil.FileExists(filePath) + if err != nil { + return errors.Wrap(err, "failed to check file exists") + } + if exists && !force { + return errors.New("build.envd already exists, use `--force` to overwrite") + } + + template := clicontext.String("template") + templateFile := fmt.Sprintf("%s.envd", template) + templatePath, err := fileutil.TemplateFile(templateFile) + if err != nil { + return errors.Wrapf(err, "failed to get template file: `%s`", templateFile) + } + + content, err := os.ReadFile(templatePath) + if err != nil { + if os.IsNotExist(err) && isDefaultTemplate(template) { + // Add default templates to the template directory if not exist + err = addTemplates(clicontext) + if err != nil { + return err + } + content, err = os.ReadFile(templatePath) + if err != nil { + return err + } + } else { + return errors.Wrapf(err, "failed to read the template file `%s`", templatePath) + } + } + err = os.WriteFile(filePath, content, 0644) + if err != nil { + return errors.Wrapf(err, "failed to write the build.envd file") + } + logrus.Infof("Template `%s` is created in `%s`", template, filePath) + + return nil +} + +func addTemplates(clicontext *cli.Context) error { + for name, content := range templates { + file, err := fileutil.TemplateFile(name + ".envd") + if err != nil { + return errors.Wrapf(err, "failed to get template file path: %s", name) + } + exist, err := fileutil.FileExists(file) + if err != nil { + return errors.Wrapf(err, "failed to check file exists: %s", file) + } + if exist { + logrus.Debugf("Template file `%s` already exists in `%s`", name, file) + continue + } + err = os.WriteFile(file, []byte(content), 0644) + if err != nil { + return errors.Wrapf(err, "failed to write template file: %s", name) + } + logrus.Debugf("Template file `%s` is added to `%s`", name, file) + } + + return nil +} diff --git a/pkg/app/template/conda.envd b/pkg/app/template/conda.envd new file mode 100644 index 000000000..5e9741363 --- /dev/null +++ b/pkg/app/template/conda.envd @@ -0,0 +1,5 @@ +def build(): + base(dev=True) + install.conda() + install.python() + shell("fish") diff --git a/pkg/app/template/julia.envd b/pkg/app/template/julia.envd deleted file mode 100644 index b68fc8718..000000000 --- a/pkg/app/template/julia.envd +++ /dev/null @@ -1,11 +0,0 @@ -def build(): - # Use ubuntu22.04 as base image and install julia - base(os="ubuntu22.04", language="julia") - # Uncomment line below to enable Pypi mirror - # config.julia_pkg_server(url="https://mirrors.tuna.tsinghua.edu.cn/julia") - - # Add the packages you are using here - install.julia_packages(["Example"]) - - # Select the shell environment you like - shell("zsh") diff --git a/pkg/app/template/r.envd b/pkg/app/template/r.envd deleted file mode 100644 index 5f7696271..000000000 --- a/pkg/app/template/r.envd +++ /dev/null @@ -1,14 +0,0 @@ -def build(): - # Use ubuntu22.04 as base image and install r - base(os="ubuntu22.04", language="r") - - # Add the packages you are using here - install.r_packages( - [ - "remotes", - "rlang", - ] - ) - - # Select the shell environment you like - shell("zsh") diff --git a/pkg/app/template/torch.envd b/pkg/app/template/torch.envd new file mode 100644 index 000000000..6010ff70f --- /dev/null +++ b/pkg/app/template/torch.envd @@ -0,0 +1,35 @@ +def default(): + shell("fish") + install.conda() + install.python() + install.apt_packages(name=["build-essential"]) + + +def others(): + install.python_packages( + name=[ + "transformers", + ] + ) + + +def gpu(): + base(dev=True, image="nvidia/cuda:12.6.3-cudnn-devel-ubuntu22.04") + default() + install.python_packages( + name=["torch --index-url https://download.pytorch.org/whl/cu126"] + ) + others() + + +def cpu(): + base(dev=True) + default() + install.python_packages( + name=["torch --index-url https://download.pytorch.org/whl/cpu"] + ) + others() + + +def build(): + cpu() diff --git a/pkg/app/template/uv.envd b/pkg/app/template/uv.envd new file mode 100644 index 000000000..f1956111e --- /dev/null +++ b/pkg/app/template/uv.envd @@ -0,0 +1,4 @@ +def build(): + base(dev=True) + install.uv() + shell("fish") diff --git a/pkg/util/fileutil/file.go b/pkg/util/fileutil/file.go index bbd490562..06438bfc9 100644 --- a/pkg/util/fileutil/file.go +++ b/pkg/util/fileutil/file.go @@ -27,9 +27,10 @@ import ( ) var ( - DefaultConfigDir string - DefaultCacheDir string - DefaultEnvdLibDir string + DefaultConfigDir string + DefaultCacheDir string + DefaultEnvdLibDir string + DefaultTemplateDir string ) func init() { @@ -40,6 +41,7 @@ func init() { DefaultConfigDir = filepath.Join(home, ".config", "envd") DefaultCacheDir = filepath.Join(home, ".cache", "envd") DefaultEnvdLibDir = filepath.Join(DefaultCacheDir, "envdlib") + DefaultTemplateDir = filepath.Join(DefaultConfigDir, "templates") } // FileExists returns true if the file exists @@ -136,6 +138,11 @@ func CacheFile(filename string) (string, error) { return validateAndJoin(DefaultCacheDir, filename) } +// TemplateFile returns the location for the specified envd template file +func TemplateFile(filename string) (string, error) { + return validateAndJoin(DefaultTemplateDir, filename) +} + func validateAndJoin(dir, file string) (string, error) { if strings.ContainsRune(file, os.PathSeparator) { return "", errors.Newf("filename %s should not contain any path separator", file) From 1c327cb7ecdec6386b315a34fe01072905221392 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 10 Mar 2025 09:41:46 +0800 Subject: [PATCH 339/355] chore: bump dep version, check dep monthly (#1992) * chore: bump dep version, check dep monthly Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/dependabot.yml | 12 +- .github/workflows/release.yml | 2 +- go.mod | 233 ++++---- go.sum | 516 ++++++++++-------- pkg/builder/build.go | 9 +- pkg/driver/docker/docker.go | 6 +- pkg/driver/nerdctl/nerdctl.go | 6 +- pkg/lang/frontend/starlark/v1/interpreter.go | 22 +- .../frontend/starlark/v1/interpreter_test.go | 2 +- pkg/types/envd.go | 8 +- 10 files changed, 449 insertions(+), 367 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ecb073748..f21be2eb0 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -3,17 +3,9 @@ updates: - package-ecosystem: "gomod" directory: "/" schedule: - interval: "weekly" - day: "monday" - time: "10:00" - timezone: "Asia/Shanghai" - open-pull-requests-limit: 5 + interval: "monthly" - package-ecosystem: "github-actions" directory: "/" schedule: - interval: "weekly" - day: "monday" - time: "10:00" - timezone: "Asia/Shanghai" - open-pull-requests-limit: 5 + interval: "monthly" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1c2c3e66a..34ab4274b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,7 +69,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.22.0 + uses: pypa/cibuildwheel@v2.23.0 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 diff --git a/go.mod b/go.mod index e2c83ab09..5bb8e5dca 100644 --- a/go.mod +++ b/go.mod @@ -1,78 +1,89 @@ module github.com/tensorchord/envd -go 1.22.6 +go 1.23.0 toolchain go1.23.4 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 - github.com/charmbracelet/bubbletea v0.24.2 - github.com/charmbracelet/lipgloss v0.8.0 + github.com/charmbracelet/bubbletea v1.3.4 + github.com/charmbracelet/lipgloss v1.0.0 github.com/cockroachdb/errors v1.11.3 github.com/containerd/console v1.0.4 github.com/containerd/log v0.1.0 - github.com/containers/image/v5 v5.33.0 - github.com/creack/pty v1.1.18 - github.com/docker/cli v27.5.0+incompatible - github.com/docker/docker v27.5.1+incompatible + github.com/containers/image/v5 v5.34.1 + github.com/creack/pty v1.1.24 + github.com/docker/cli v28.0.1+incompatible + github.com/docker/docker v28.0.1+incompatible github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 github.com/gliderlabs/ssh v0.3.8 - github.com/go-git/go-git/v5 v5.13.1 + github.com/go-git/go-git/v5 v5.14.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.6.0 github.com/hashicorp/go-getter v1.7.8 - github.com/mattn/go-isatty v0.0.19 - github.com/moby/buildkit v0.19.0 + github.com/mattn/go-isatty v0.0.20 + github.com/moby/buildkit v0.20.1 github.com/moby/term v0.5.2 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 github.com/onsi/ginkgo/v2 v2.22.2 github.com/onsi/gomega v1.36.2 github.com/opencontainers/go-digest v1.0.0 - github.com/opencontainers/image-spec v1.1.0 + github.com/opencontainers/image-spec v1.1.1 github.com/pkg/errors v0.9.1 - github.com/pkg/sftp v1.13.6 - github.com/schollz/progressbar/v3 v3.13.1 - github.com/segmentio/analytics-go/v3 v3.2.1 + github.com/pkg/sftp v1.13.7 + github.com/schollz/progressbar/v3 v3.18.0 + github.com/segmentio/analytics-go/v3 v3.3.0 github.com/sirupsen/logrus v1.9.3 - github.com/spf13/viper v1.16.0 + github.com/spf13/viper v1.19.0 github.com/stretchr/testify v1.10.0 - github.com/syncthing/syncthing v1.23.7 + github.com/syncthing/syncthing v1.29.2 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab - github.com/urfave/cli/v2 v2.27.5 - go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd - golang.org/x/crypto v0.32.0 - golang.org/x/sync v0.10.0 - golang.org/x/term v0.28.0 - golang.org/x/time v0.6.0 + github.com/urfave/cli/v2 v2.27.6 + go.starlark.net v0.0.0-20250225190231-0d3f41d403af + golang.org/x/crypto v0.36.0 + golang.org/x/sync v0.12.0 + golang.org/x/term v0.30.0 + golang.org/x/time v0.11.0 ) require ( - cloud.google.com/go v0.112.0 // indirect - cloud.google.com/go/compute/metadata v0.5.0 // indirect - cloud.google.com/go/iam v1.1.5 // indirect - cloud.google.com/go/storage v1.36.0 // indirect + cel.dev/expr v0.22.0 // indirect + cloud.google.com/go v0.118.3 // indirect + cloud.google.com/go/auth v0.15.0 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.4.1 // indirect + cloud.google.com/go/monitoring v1.24.0 // indirect + cloud.google.com/go/storage v1.50.0 // indirect dario.cat/mergo v1.0.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/BurntSushi/toml v1.4.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.1.3 // indirect + github.com/ProtonMail/go-crypto v1.1.6 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect - github.com/aws/aws-sdk-go v1.44.122 // indirect + github.com/aws/aws-sdk-go v1.55.6 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect - github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect - github.com/cloudflare/circl v1.3.7 // indirect - github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect - github.com/cockroachdb/redact v1.1.5 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/charmbracelet/x/ansi v0.8.0 // indirect + github.com/charmbracelet/x/term v0.2.1 // indirect + github.com/cloudflare/circl v1.6.0 // indirect + github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect + github.com/cockroachdb/redact v1.1.6 // indirect github.com/containerd/containerd/api v1.8.0 // indirect - github.com/containerd/containerd/v2 v2.0.2 // indirect + github.com/containerd/containerd/v2 v2.0.3 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -80,132 +91,144 @@ require ( github.com/containerd/ttrpc v1.2.7 // indirect github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect - github.com/containers/ocicrypt v1.2.0 // indirect - github.com/containers/storage v1.56.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect - github.com/cyphar/filepath-securejoin v0.3.6 // indirect + github.com/containers/ocicrypt v1.2.1 // indirect + github.com/containers/storage v1.57.2 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect + github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker-credential-helpers v0.8.2 // indirect + github.com/docker/docker-credential-helpers v0.9.2 // indirect + github.com/ebitengine/purego v0.8.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect + github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/fsnotify/fsnotify v1.8.0 // indirect + github.com/getsentry/sentry-go v0.31.1 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect - github.com/go-git/go-billy/v5 v5.6.1 // indirect + github.com/go-git/go-billy/v5 v5.6.2 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect - github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/protobuf v1.5.4 // indirect - github.com/golang/snappy v0.0.4 // indirect - github.com/google/go-cmp v0.6.0 // indirect + github.com/golang/snappy v1.0.0 // indirect + github.com/google/go-cmp v0.7.0 // indirect github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect - github.com/google/s2a-go v0.1.7 // indirect + github.com/google/s2a-go v0.1.9 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect - github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.5 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/greatroar/blobloom v0.7.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 // indirect + github.com/greatroar/blobloom v0.8.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-safetemp v1.0.0 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/in-toto/in-toto-golang v0.9.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.17.11 // indirect - github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/klauspost/compress v1.18.0 // indirect github.com/kr/fs v0.1.0 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect - github.com/minio/sha256-simd v1.0.1 // indirect github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 // indirect github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect - github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect - github.com/moby/sys/capability v0.3.0 // indirect + github.com/moby/sys/capability v0.4.0 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/sys/signal v0.7.1 // indirect github.com/moby/sys/user v0.3.0 // indirect - github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect + github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.15.2 // indirect - github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect - github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 // indirect - github.com/opencontainers/runtime-spec v1.2.0 // indirect + github.com/muesli/termenv v0.16.0 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/nsf/termbox-go v1.1.1 // indirect + github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect + github.com/opencontainers/runtime-spec v1.2.1 // indirect github.com/pelletier/go-toml/v2 v2.2.3 // indirect - github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 // indirect - github.com/pierrec/lz4/v4 v4.1.18 // indirect - github.com/pjbgf/sha1cd v0.3.0 // indirect + github.com/pierrec/lz4/v4 v4.1.22 // indirect + github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b // indirect + github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect + github.com/prometheus/client_golang v1.21.1 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.62.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect - github.com/rogpeppe/go-internal v1.13.1 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sasha-s/go-deadlock v0.3.1 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect - github.com/segmentio/backo-go v1.0.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect + github.com/segmentio/backo-go v1.1.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect - github.com/shirou/gopsutil/v3 v3.23.6 // indirect - github.com/skeema/knownhosts v1.3.0 // indirect - github.com/spf13/afero v1.9.5 // indirect - github.com/spf13/cast v1.5.1 // indirect - github.com/spf13/jwalterweatherman v1.1.0 // indirect - github.com/spf13/pflag v1.0.5 // indirect - github.com/subosito/gotenv v1.4.2 // indirect - github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 // indirect + github.com/shirou/gopsutil/v4 v4.25.2 // indirect + github.com/skeema/knownhosts v1.3.1 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/cast v1.7.1 // indirect + github.com/spf13/pflag v1.0.6 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect - github.com/thejerf/suture/v4 v4.0.2 // indirect - github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a // indirect - github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 // indirect + github.com/thejerf/suture/v4 v4.0.6 // indirect + github.com/tklauser/go-sysconf v0.3.15 // indirect + github.com/tklauser/numcpus v0.10.0 // indirect + github.com/tonistiigi/fsutil v0.0.0-20250227023350-13604323a291 // indirect + github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 // indirect github.com/ulikunitz/xz v0.5.12 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect - github.com/yusufpapurcu/wmi v1.2.3 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect - go.opentelemetry.io/otel v1.31.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 // indirect - go.opentelemetry.io/otel/metric v1.31.0 // indirect - go.opentelemetry.io/otel/sdk v1.31.0 // indirect - go.opentelemetry.io/otel/trace v1.31.0 // indirect - go.opentelemetry.io/proto/otlp v1.3.1 // indirect - golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c // indirect - golang.org/x/net v0.34.0 // indirect - golang.org/x/oauth2 v0.23.0 // indirect - golang.org/x/sys v0.29.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.29.0 // indirect - google.golang.org/api v0.155.0 // indirect - google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 // indirect - google.golang.org/grpc v1.68.1 // indirect - google.golang.org/protobuf v1.36.1 // indirect + github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect + go.opentelemetry.io/otel v1.35.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect + go.opentelemetry.io/otel/metric v1.35.0 // indirect + go.opentelemetry.io/otel/sdk v1.35.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect + go.opentelemetry.io/otel/trace v1.35.0 // indirect + go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect + golang.org/x/net v0.37.0 // indirect + golang.org/x/oauth2 v0.28.0 // indirect + golang.org/x/sys v0.31.0 // indirect + golang.org/x/text v0.23.0 // indirect + golang.org/x/tools v0.31.0 // indirect + google.golang.org/api v0.224.0 // indirect + google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect + google.golang.org/grpc v1.71.0 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 59a4111b6..297d754a2 100644 --- a/go.sum +++ b/go.sum @@ -1,4 +1,6 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= +cel.dev/expr v0.22.0 h1:+hFFhLPmquBImfs1BiN2PZmkr5ASse2ZOuaxIs9e4R8= +cel.dev/expr v0.22.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -37,8 +39,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.112.0 h1:tpFCD7hpHFlQ8yPwT3x+QeXqc2T6+n6T+hmABHfDUSM= -cloud.google.com/go v0.112.0/go.mod h1:3jEEVwZ/MHU4djK5t5RHuKOA/GbLddgTdVubX1qnPD4= +cloud.google.com/go v0.118.3 h1:jsypSnrE/w4mJysioGdMBg4MiW/hHx/sArFpaBWHdME= +cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= @@ -100,6 +102,10 @@ cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVo cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= +cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= +cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= +cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= @@ -179,8 +185,8 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.5.0 h1:Zr0eK8JbFv6+Wi4ilXAR8FJ3wyNdpxHKJNPos6LTZOY= -cloud.google.com/go/compute/metadata v0.5.0/go.mod h1:aHnloV2TPI38yx4s9+wAZhHykWvVCfu7hQbF+9CWoiY= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -314,8 +320,8 @@ cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGE cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/iam v1.1.5 h1:1jTsCu4bcsNsE4iiqNT5SHwrDRCfRmIaaaVFhRveTJI= -cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iam v1.4.1 h1:cFC25Nv+u5BkTR/BT1tXdoF2daiVbZ1RLx2eqfQ9RMM= +cloud.google.com/go/iam v1.4.1/go.mod h1:2vUEJpUG3Q9p2UdsyksaKpDzlwOrnMzS30isdReIcLM= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= @@ -345,9 +351,13 @@ cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6 cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= +cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.6.4 h1:3tyw9rO3E2XVXzSApn1gyEEnH2K9SynNQjMlBi3uHLg= +cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= @@ -371,6 +381,8 @@ cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhI cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.24.0 h1:csSKiCJ+WVRgNkRzzz3BPoGjFhjPY23ZTcaenToJxMM= +cloud.google.com/go/monitoring v1.24.0/go.mod h1:Bd1PRK5bmQBQNnuGwHBfUamAV1ys9049oEPHnn4pcsc= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= @@ -534,8 +546,8 @@ cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeL cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.36.0 h1:P0mOkAcaJxhCTvAkMhxMfrTKiNcub4YmmPBtlhAyTr8= -cloud.google.com/go/storage v1.36.0/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storage v1.50.0 h1:3TbVkzTooBvnZsk7WaAQfOsNrdoM8QHusXA1cpk6QJs= +cloud.google.com/go/storage v1.50.0/go.mod h1:l7XeiD//vx5lfqE3RavfmU9yvk5Pp0Zhcv482poyafY= cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= @@ -555,6 +567,8 @@ cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.11.3 h1:c+I4YFjxRQjvAhRmSsmjpASUKq88chOX854ied0K/pE= +cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8= cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= @@ -617,6 +631,14 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= @@ -629,8 +651,8 @@ github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEP github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= -github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk= -github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= +github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -646,8 +668,9 @@ github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4x github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= +github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= @@ -657,8 +680,6 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/c9s/goprocinfo v0.0.0-20170609001544-b34328d6e0cd/go.mod h1:uEyr4WpAH4hio6LFriaPkL938XnrvLpNPmQHBdrmbIE= @@ -667,26 +688,31 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= -github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= -github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= -github.com/charmbracelet/lipgloss v0.8.0 h1:IS00fk4XAHcf8uZKc3eHeMUTCxUH6NkaTrdyCQk84RU= -github.com/charmbracelet/lipgloss v0.8.0/go.mod h1:p4eYUZZJ/0oXTuCQKFF8mqyKCz0ja6y+7DniDDw5KKU= +github.com/charmbracelet/bubbletea v1.3.4 h1:kCg7B+jSCFPLYRA52SDZjr51kG/fMUEoPoZrkaDHyoI= +github.com/charmbracelet/bubbletea v1.3.4/go.mod h1:dtcUCyCGEX3g9tosuYiut3MXgY/Jsv9nKVdibKKRRXo= +github.com/charmbracelet/lipgloss v1.0.0 h1:O7VkGDvqEdGi93X+DeqsQ7PKHDgtQfF8j8/O2qFMQNg= +github.com/charmbracelet/lipgloss v1.0.0/go.mod h1:U5fy9Z+C38obMs+T+tJqst9VGzlOYGj4ri9reL3qUlo= +github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= +github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= +github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= +github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM= +github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= -github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= +github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= +github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -700,18 +726,20 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= -github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= -github.com/cockroachdb/redact v1.1.5 h1:u1PMllDkdFfPWaNGMyLD1+so+aq3uUItthCFqzwPJ30= -github.com/cockroachdb/redact v1.1.5/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= +github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= +github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= +github.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE= github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59 h1:qWj4qVYZ95vLWwqyNJCQg7rDsG5wPdze0UaPolH7DUk= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= -github.com/containerd/cgroups/v3 v3.0.3/go.mod h1:8HBe7V3aWGLFPd/k03swSIsGjZhHI2WzJmticMgVuz0= +github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo= +github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= @@ -720,8 +748,8 @@ github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMX github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= -github.com/containerd/containerd/v2 v2.0.2 h1:GmH/tRBlTvrXOLwSpWE2vNAm8+MqI6nmxKpKBNKY8Wc= -github.com/containerd/containerd/v2 v2.0.2/go.mod h1:wIqEvQ/6cyPFUGJ5yMFanspPabMLor+bF865OHvNTTI= +github.com/containerd/containerd/v2 v2.0.3 h1:zBKgwgZsuu+LPCMzCLgA4sC4MiZzZ59ZT31XkmiISQM= +github.com/containerd/containerd/v2 v2.0.3/go.mod h1:5j9QUUaV/cy9ZeAx4S+8n9ffpf+iYnEj4jiExgcbuLY= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= @@ -751,27 +779,27 @@ github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQ github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= -github.com/containers/image/v5 v5.33.0 h1:6oPEFwTurf7pDTGw7TghqGs8K0+OvPtY/UyzU0B2DfE= -github.com/containers/image/v5 v5.33.0/go.mod h1:T7HpASmvnp2H1u4cyckMvCzLuYgpD18dSmabSw0AcHk= +github.com/containers/image/v5 v5.34.1 h1:/m2bkFnuedTyNkzma8s7cFLjeefPIb4trjyafWhIlwM= +github.com/containers/image/v5 v5.34.1/go.mod h1:/WnvUSEfdqC/ahMRd4YJDBLrpYWkGl018rB77iB3FDo= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= -github.com/containers/ocicrypt v1.2.0 h1:X14EgRK3xNFvJEfI5O4Qn4T3E25ANudSOZz/sirVuPM= -github.com/containers/ocicrypt v1.2.0/go.mod h1:ZNviigQajtdlxIZGibvblVuIFBKIuUI2M0QM12SD31U= -github.com/containers/storage v1.56.0 h1:DZ9KSkj6M2tvj/4bBoaJu3QDHRl35BwsZ4kmLJS97ZI= -github.com/containers/storage v1.56.0/go.mod h1:c6WKowcAlED/DkWGNuL9bvGYqIWCVy7isRMdCSKWNjk= +github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM= +github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ= +github.com/containers/storage v1.57.2 h1:2roCtTyE9pzIaBDHibK72DTnYkPmwWaq5uXxZdaWK4U= +github.com/containers/storage v1.57.2/go.mod h1:i/Hb4lu7YgFr9G0K6BMjqW0BLJO1sFsnWQwj2UoWCUM= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= -github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= -github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= +github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= +github.com/creack/pty v1.1.24/go.mod h1:08sCNb52WyoAwi2QDyzUCTgcvVFhUzewun7wtTfvcwE= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= -github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= +github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/d4l3k/messagediff v1.2.1 h1:ZcAIMYsUg0EAp9X+tt8/enBE/Q8Yd5kzPynLyKptt9U= github.com/d4l3k/messagediff v1.2.1/go.mod h1:Oozbb1TVXFac9FtSIxHBMnBCq2qeH/2KkEQxENCrlLo= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -780,15 +808,15 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v27.5.0+incompatible h1:aMphQkcGtpHixwwhAXJT1rrK/detk2JIvDaFkLctbGM= -github.com/docker/cli v27.5.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.0.1+incompatible h1:g0h5NQNda3/CxIsaZfH4Tyf6vpxFth7PYl3hgCPOKzs= +github.com/docker/cli v28.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v27.5.1+incompatible h1:4PYU5dnBYqRQi0294d1FBECqT9ECWeQAIfE8q4YnPY8= -github.com/docker/docker v27.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.8.2 h1:bX3YxiGzFP5sOXWc3bTPEXdEaZSeVMrFgOr3T+zrFAo= -github.com/docker/docker-credential-helpers v0.8.2/go.mod h1:P3ci7E3lwkZg6XiHdRKft1KckHiO9a2rNtyFbZ/ry9M= +github.com/docker/docker v28.0.1+incompatible h1:FCHjSRdXhNRFjlHMTv4jUNlIBbTeRjrWfeFuJp7jpo0= +github.com/docker/docker v28.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.9.2 h1:50JF7ADQiHdAVBRtg/vy883Y4U5+5GmPOBNtUU+X+6A= +github.com/docker/docker-credential-helpers v0.9.2/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= @@ -799,8 +827,10 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ= -github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64= +github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= +github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= +github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -814,26 +844,36 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= +github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= -github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= +github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= +github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= -github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= -github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/getsentry/sentry-go v0.31.1 h1:ELVc0h7gwyhnXHDouXkhqTFSO5oslsRDk0++eyE0KJ4= +github.com/getsentry/sentry-go v0.31.1/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= @@ -849,12 +889,12 @@ github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2H github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= -github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA= -github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE= +github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UNbRM= +github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M= -github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc= +github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= +github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -865,8 +905,9 @@ github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= +github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= @@ -887,8 +928,9 @@ github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= +github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= @@ -920,8 +962,9 @@ github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= @@ -940,15 +983,17 @@ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= @@ -968,8 +1013,8 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= -github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= -github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -981,8 +1026,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= -github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.5 h1:VgzTY2jogw3xt39CusEnFJWm7rlsq5yL5q9XdLOuP5g= +github.com/googleapis/enterprise-certificate-proxy v0.3.5/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -994,20 +1039,20 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= -github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= +github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/greatroar/blobloom v0.7.2 h1:F30MGLHOcb4zr0pwCPTcKdlTM70rEgkf+LzdUPc5ss8= -github.com/greatroar/blobloom v0.7.2/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= +github.com/greatroar/blobloom v0.8.0 h1:I9RlEkfqK9/6f1v9mFmDYegDQ/x0mISCpiNpAm23Pt4= +github.com/greatroar/blobloom v0.8.0/go.mod h1:mjMJ1hh1wjGVfr93QIHJ6FfDNVrA0IELv8OvMHJxHKs= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0/go.mod h1:ggCgvZ2r7uOoQjOyu2Y1NhHmEPPzzuhWgcza5M1Ji1I= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 h1:5ZPtiqj0JL5oKWmcsq4VMaAW5ukBEgSGXEN89zeH1Jo= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3/go.mod h1:ndYquD05frm2vACXE1nsccT4oJzjhw2arTS2cpUD1PI= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1019,8 +1064,9 @@ github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+l github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= -github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= +github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -1047,7 +1093,6 @@ github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1 github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= @@ -1057,11 +1102,9 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= -github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -1080,33 +1123,29 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/lufia/plan9stats v0.0.0-20211012122336-39d0f177ccd0/go.mod h1:zJYVVT2jmtg6P3p1VtQj7WsuWi/y4VnjVBn7F8KPB3I= +github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d h1:fjMbDVUGsMQiVZnSQsmouYJvMdwsGiDipOZoN66v844= +github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= +github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= -github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= -github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= github.com/mattn/go-runewidth v0.0.0-20170201023540-14207d285c6c/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= -github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= -github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 h1:cUVxyR+UfmdEAZGJ8IiKld1O0dbGotEnkMolG5hfMSY= github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75/go.mod h1:pBbZyGwC5i16IBkjVKoy/sznA8jPD/K9iedwe1ESE6w= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= @@ -1115,20 +1154,21 @@ github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 h1:DpOJ2HYzCv8LZP15IdmG+YdwD2luVPHITV96TkirNBM= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.19.0 h1:w9G1p7sArvCGNkpWstAqJfRQTXBKukMyMK1bsah1HNo= -github.com/moby/buildkit v0.19.0/go.mod h1:WiHBFTgWV8eB1AmPxIWsAlKjUACAwm3X/14xOV4VWew= +github.com/moby/buildkit v0.20.1 h1:sT0ZXhhNo5rVbMcYfgttma3TdUHfO5JjFA0UAL8p9fY= +github.com/moby/buildkit v0.20.1/go.mod h1:Rq9nB/fJImdk6QeM0niKtOHJqwKeYMrK847hTTDVuA4= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= -github.com/moby/sys/capability v0.3.0 h1:kEP+y6te0gEXIaeQhIi0s7vKs/w0RPoH1qPa6jROcVg= -github.com/moby/sys/capability v0.3.0/go.mod h1:4g9IK291rVkms3LKCDOoYlnV8xKwoDTpIrNEE35Wq0I= +github.com/moby/sys/capability v0.4.0 h1:4D4mI6KlNtWMCM1Z/K0i7RV1FkX+DBDHKVJpCndZoHk= +github.com/moby/sys/capability v0.4.0/go.mod h1:4g9IK291rVkms3LKCDOoYlnV8xKwoDTpIrNEE35Wq0I= github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= @@ -1152,23 +1192,23 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= +github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= -github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= -github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/muesli/termenv v0.16.0 h1:S5AlUN9dENB57rsbnkPyfdGuWIlkmzJjbFf0Tf5FWUc= +github.com/muesli/termenv v0.16.0/go.mod h1:ZRfOIKPFDYQoDFF4Olj7/QJbW60Ol/kL1pU3VfY/Cnk= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/nsf/termbox-go v0.0.0-20180303152453-e2050e41c884/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= -github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= +github.com/nsf/termbox-go v1.1.1 h1:nksUPLCb73Q++DwbYUBEglYBRPZyoXJdrj5L+TkjyZY= +github.com/nsf/termbox-go v1.1.1/go.mod h1:T0cTdVuOwf7pHQNtfhnEbzHbcNyCEcVU4YPpouCbVxo= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -1185,23 +1225,22 @@ github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAl github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= -github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473 h1:J1QZwDXgZ4dJD2s19iqR9+U00OWM2kDzbf1O/fmvCWg= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug= -github.com/opencontainers/image-spec v1.1.0/go.mod h1:W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTrM= +github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= +github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE7dzrbT927iTk= -github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626 h1:DmNGcqH3WDbV5k8OJ+esPWbqUOX5rMLR2PMvziDMJi0= -github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= +github.com/opencontainers/runtime-spec v1.2.1 h1:S4k4ryNgEpxW1dzyqffOmhI1BHYcjzU8lpJfSlR0xww= +github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= @@ -1209,19 +1248,16 @@ github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3v github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= -github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= -github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761 h1:W04oB3d0J01W5jgYRGKsV8LCM6g9EkCvPkZcmFuy0OE= -github.com/petermattis/goid v0.0.0-20230518223814-80aa455d8761/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= -github.com/pierrec/lz4/v4 v4.1.18 h1:xaKrnTkyoqfh1YItXl56+6KJNVYWlEEPuAQW9xsplYQ= -github.com/pierrec/lz4/v4 v4.1.18/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= +github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4= -github.com/pjbgf/sha1cd v0.3.0/go.mod h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI= +github.com/pjbgf/sha1cd v0.3.2 h1:a9wb0bp1oC2TGwStyn0Umc/IGKQnEgF0vVaZ8QF8eo4= +github.com/pjbgf/sha1cd v0.3.2/go.mod h1:zQWigSxVmsHEZow5qaLtPYxpcKMMQpa09ixqBxuCS6A= github.com/pkg/browser v0.0.0-20201207095918-0426ae3fba23/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1229,30 +1265,28 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pkg/sftp v1.13.6 h1:JFZT4XbOU7l77xGSpOdW+pwIMqP044IyjXX6FGyEKFo= -github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/pkg/sftp v1.13.7 h1:uv+I3nNJvlKZIQGSr8JVQLNHFU9YhhNpvC14Y6KgmSM= +github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b h1:0LFwY6Q3gMACTjAbMZBjXAqTOzOwFaj2Ld6cjeQ7Rig= -github.com/power-devops/perfstat v0.0.0-20221212215047-62379fc7944b/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= -github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= +github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.57.0 h1:Ro/rKjwdq9mZn1K5QPctzh+MA4Lp0BuYk5ZZEVhoNcY= -github.com/prometheus/common v0.57.0/go.mod h1:7uRPFSUTbfZWsJ7MHY56sqt7hLQu3bxXHDnNhl8E9qI= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -1260,32 +1294,32 @@ github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6L github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= -github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= -github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/schollz/progressbar/v3 v3.13.1 h1:o8rySDYiQ59Mwzy2FELeHY5ZARXZTVJC7iHD6PEFUiE= -github.com/schollz/progressbar/v3 v3.13.1/go.mod h1:xvrbki8kfT1fzWzBT/UZd9L6GA+jdL7HAgq2RFnO6fQ= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= +github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA= +github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= -github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= -github.com/segmentio/analytics-go/v3 v3.2.1 h1:G+f90zxtc1p9G+WigVyTR0xNfOghOGs/PYAlljLOyeg= -github.com/segmentio/analytics-go/v3 v3.2.1/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= -github.com/segmentio/backo-go v1.0.0 h1:kbOAtGJY2DqOR0jfRkYEorx/b18RgtepGtY3+Cpe6qA= -github.com/segmentio/backo-go v1.0.0/go.mod h1:kJ9mm9YmoWSkk+oQ+5Cj8DEoRCX2JT6As4kEtIIOp1M= +github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc= +github.com/secure-systems-lab/go-securesystemslib v0.9.0/go.mod h1:DVHKMcZ+V4/woA/peqr+L0joiRXbPpQ042GgJckkFgw= +github.com/segmentio/analytics-go/v3 v3.3.0 h1:8VOMaVGBW03pdBrj1CMFfY9o/rnjJC+1wyQHlVxjw5o= +github.com/segmentio/analytics-go/v3 v3.3.0/go.mod h1:p8owAF8X+5o27jmvUognuXxdtqvSGtD0ZrfY2kcS9bE= +github.com/segmentio/backo-go v1.1.0 h1:cJIfHQUdmLsd8t9IXqf5J8SdrOMn9vMa7cIvOavHAhc= +github.com/segmentio/backo-go v1.1.0/go.mod h1:ckenwdf+v/qbyhVdNPWHnqh2YdJBED1O9cidYyM5J18= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= -github.com/shirou/gopsutil/v3 v3.23.6 h1:5y46WPI9QBKBbK7EEccUPNXpJpNrvPuTD0O2zHEHT08= -github.com/shirou/gopsutil/v3 v3.23.6/go.mod h1:j7QX50DrXYggrpN30W0Mo+I4/8U2UUIQrnrhqUeWrAU= -github.com/shoenig/go-m1cpu v0.1.6/go.mod h1:1JJMcUBvfNwpq05QDQVAnx3gUHr9IYF7GNg9SUEw2VQ= -github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnjqq0k= +github.com/shirou/gopsutil/v4 v4.25.2 h1:NMscG3l2CqtWFS86kj3vP7soOczqrQYIEhO/pMvvQkk= +github.com/shirou/gopsutil/v4 v4.25.2/go.mod h1:34gBYJzyqCDT11b6bMHP0XCvWeU3J61XRT7a2EmCRTA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -1294,27 +1328,27 @@ github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY= -github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M= +github.com/skeema/knownhosts v1.3.1 h1:X2osQ+RAjK76shCbvhHHHVl3ZlgDm8apHEHFqRjnBY8= +github.com/skeema/knownhosts v1.3.1/go.mod h1:r7KTdC8l4uxWRyK2TpQZ/1o5HaSzh06ePQNxPwTcfiY= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spdx/tools-golang v0.5.3 h1:ialnHeEYUC4+hkm5vJm4qz2x+oEJbS0mAMFrNXdQraY= github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/uFZm2NTMhI= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= -github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= +github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -1330,29 +1364,29 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8= -github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= -github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2 h1:F4snRP//nIuTTW9LYEzVH4HVwDG9T3M4t8y/2nqMbiY= -github.com/syncthing/notify v0.0.0-20210616190510-c6b7342338d2/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= -github.com/syncthing/syncthing v1.23.7 h1:PaHKBN4C+qaam9vtMV0qjwMBywAuyVtxmQ7vbBrV0Rw= -github.com/syncthing/syncthing v1.23.7/go.mod h1:9f9139UzZ/llx16dP3x1XtID87IhOorEbHHrTDjNhQs= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635 h1:kdXcSzyDtseVEc4yCz2qF8ZrQvIDBJLl4S1c3GCXmoI= +github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= +github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= +github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc h1:xc3UfSFlH/X5hRw3h21RF6WXnRUYKmGRx06FEaVxfkM= +github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= +github.com/syncthing/syncthing v1.29.2 h1:TZJSOhx6cPV1jPKK+RkTcRLLKtXDvKRJy4YZzIL+K0o= +github.com/syncthing/syncthing v1.29.2/go.mod h1:VYkBOHuUqNzQrld9D1c75/wNsoe5qaJK/760RE1TzU8= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= github.com/tensorchord/envd-server v0.0.27 h1:zCJn4tQNplW0G2dtC9tWCKVry6ZulXjnN//6gPtPePg= github.com/tensorchord/envd-server v0.0.27/go.mod h1:z73SMAiAvPo+4mY2xnjxUbJJ0ub1ihbyglPEAOng99I= -github.com/thejerf/suture/v4 v4.0.2 h1:VxIH/J8uYvqJY1+9fxi5GBfGRkRZ/jlSOP6x9HijFQc= -github.com/thejerf/suture/v4 v4.0.2/go.mod h1:g0e8vwskm9tI0jRjxrnA6lSr0q6OfPdWJVX7G5bVWRs= -github.com/tklauser/go-sysconf v0.3.11/go.mod h1:GqXfhXY3kiPa0nAXPDIQIWzJbMCB7AmcWpGR8lSZfqI= -github.com/tklauser/numcpus v0.6.0/go.mod h1:FEZLMke0lhOUG6w2JadTzp0a+Nl8PF/GFkQ5UVIcaL4= -github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a h1:EfGw4G0x/8qXWgtcZ6KVaPS+wpWOQMaypczzP8ojkMY= -github.com/tonistiigi/fsutil v0.0.0-20250113203817-b14e27f4135a/go.mod h1:Dl/9oEjK7IqnjAm21Okx/XIxUCFJzvh+XdVHUlBwXTw= -github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4 h1:7I5c2Ig/5FgqkYOh/N87NzoyI9U15qUPXhDD8uCupv8= -github.com/tonistiigi/go-csvvalue v0.0.0-20240710180619-ddb21b71c0b4/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= +github.com/thejerf/suture/v4 v4.0.6 h1:QsuCEsCqb03xF9tPAsWAj8QOAJBgQI1c0VqJNaingg8= +github.com/thejerf/suture/v4 v4.0.6/go.mod h1:gu9Y4dXNUWFrByqRt30Rm9/UZ0wzRSt9AJS6xu/ZGxU= +github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= +github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= +github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= +github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tonistiigi/fsutil v0.0.0-20250227023350-13604323a291 h1:1WRvmYdTkwjgFIlnOwo6Y15BMwQBUQT423y1zHad4Eo= +github.com/tonistiigi/fsutil v0.0.0-20250227023350-13604323a291/go.mod h1:Dl/9oEjK7IqnjAm21Okx/XIxUCFJzvh+XdVHUlBwXTw= +github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 h1:2f304B10LaZdB8kkVEaoXvAMVan2tl9AiK4G0odjQtE= +github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab h1:H6aJ0yKQ0gF49Qb2z5hI1UHxSQt4JMyxebFR15KnApw= @@ -1362,10 +1396,10 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc= github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli/v2 v2.27.5 h1:WoHEJLdsXr6dDWoJgMq/CboDmyY/8HMMH1fTECbih+w= -github.com/urfave/cli/v2 v2.27.5/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= -github.com/vbatts/tar-split v0.11.6 h1:4SjTW5+PU11n6fZenf2IPoV8/tz3AaYHMWjf23envGs= -github.com/vbatts/tar-split v0.11.6/go.mod h1:dqKNtesIOr2j2Qv3W/cHjnvk9I8+G7oAkFDFN6TCBEI= +github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g= +github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= +github.com/vbatts/tar-split v0.11.7 h1:ixZ93pO/GmvaZw4Vq9OwmfZK/kc2zKdPfu0B+gYqs3U= +github.com/vbatts/tar-split v0.11.7/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= @@ -1379,8 +1413,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yusufpapurcu/wmi v1.2.3 h1:E1ctvB7uKFMOJw3fdOW32DwGE9I7t++CRUEMKvFoFiw= -github.com/yusufpapurcu/wmi v1.2.3/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= +github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= @@ -1392,31 +1426,43 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0 h1:4BZHA+B1wXEQoGNHxW8mURaLhcdGwvRnmhGbm+odRbc= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.56.0/go.mod h1:3qi2EEwMgB4xnKgPLqsDP3j9qxnHDZeHsnAxfjQqTko= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= -go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= -go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0 h1:K0XaT3DwHAcV4nKLzcQvwAgSyisUghWoY20I7huthMk= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.31.0/go.mod h1:B5Ki776z/MBnVha1Nzwp5arlzBbE3+1jk+pGmaP5HME= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= +go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 h1:0tY123n7CdWMem7MOVdKOt0YfshufLCwfE5Bob+hQuM= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0/go.mod h1:CosX/aS4eHnG9D7nESYpV753l4j9q5j3SL/PUYd2lR8= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= +go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= +go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= -go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= -go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= -go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= -go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0= -go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= -go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= +go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= +go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= +go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= +go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= +go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= +go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= +go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= +go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0= -go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8= -go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd h1:Uo/x0Ir5vQJ+683GXB9Ug+4fcjsbp7z7Ul8UaZbhsRM= -go.starlark.net v0.0.0-20220328144851-d1966c6b9fcd/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= +go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= +go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= +go.starlark.net v0.0.0-20250225190231-0d3f41d403af h1:gdHSl5pZSdC+7qdBKx0n0x4Y2b4UNjuKnKH8Lfwft3o= +go.starlark.net v0.0.0-20250225190231-0d3f41d403af/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= +go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= +go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1427,13 +1473,13 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= +golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1449,8 +1495,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c h1:7dEasQXItcW1xKJ2+gg5VOiBnqWrJc+rq0DPKyvvdbY= -golang.org/x/exp v0.0.0-20241009180824-f66d83c29e7c/go.mod h1:NQtJDoLvd6faHhE7m4T/1IY708gDefGGjR/iUW8yQQ8= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1496,8 +1542,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1553,7 +1599,6 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= @@ -1565,8 +1610,9 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= +golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1596,8 +1642,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs= -golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= +golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1617,8 +1663,9 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= +golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1687,6 +1734,7 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1719,17 +1767,17 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= +golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= @@ -1738,10 +1786,12 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= +golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1761,16 +1811,17 @@ golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= +golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.6.0 h1:eTDhh4ZXt5Qf0augr54TN6suAUudPcawVZeIAPU7D4U= -golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0= +golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1839,8 +1890,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= -golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= +golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= +golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1848,7 +1899,6 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= @@ -1915,8 +1965,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.155.0 h1:vBmGhCYs0djJttDNynWo44zosHlPvHmA0XiN2zP2DtA= -google.golang.org/api v0.155.0/go.mod h1:GI5qK5f40kCpHfPn6+YzGAByIKWv8ujFnmoWm7Igduk= +google.golang.org/api v0.224.0 h1:Ir4UPtDsNiwIOHdExr3fAj4xZ42QjK7uQte3lORLJwU= +google.golang.org/api v0.224.0/go.mod h1:3V39my2xAGkodXy0vEqcEtkqgw2GtrFL5WuBZlCTCOQ= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2056,12 +2106,12 @@ google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 h1:KAeGQVN3M9nD0/bQXnr/ClcEMJ968gUXJQ9pwfSynuQ= -google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80/go.mod h1:cc8bqMqtv9gMOr0zHg2Vzff5ULhhL2IXP4sbcn32Dro= -google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9 h1:T6rh4haD3GVYsgEfWExoCZA2o2FmbNyKpTuAxbEFPTg= -google.golang.org/genproto/googleapis/api v0.0.0-20241007155032-5fefd90f89a9/go.mod h1:wp2WsuBYj6j8wUdo3ToZsdxxixbvQNAHqVJrTgi5E5M= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38 h1:zciRKQ4kBpFgpfC5QQCVtnnNAcLIqweL7plyZRQHVpI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241021214115-324edc3d5d38/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE= +google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= +google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= +google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -2104,8 +2154,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= -google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= +google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= +google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2125,8 +2175,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.1 h1:yBPeRvTftaleIgM3PZ/WBIZ7XM/eEYAaEyCwvyjq/gk= -google.golang.org/protobuf v1.36.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2203,9 +2253,3 @@ rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8 rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= -sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= -tags.cncf.io/container-device-interface v0.8.0 h1:8bCFo/g9WODjWx3m6EYl3GfUG31eKJbaggyBDxEldRc= -tags.cncf.io/container-device-interface v0.8.0/go.mod h1:Apb7N4VdILW0EVdEMRYXIDVRZfNJZ+kmEUss2kRRQ6Y= -tags.cncf.io/container-device-interface/specs-go v0.8.0 h1:QYGFzGxvYK/ZLMrjhvY0RjpUavIn4KcmRmVP/JjdBTA= -tags.cncf.io/container-device-interface/specs-go v0.8.0/go.mod h1:BhJIkjjPh4qpys+qm4DAYtUyryaTDg9zris+AczXyws= diff --git a/pkg/builder/build.go b/pkg/builder/build.go index d2133c536..ac80c3465 100644 --- a/pkg/builder/build.go +++ b/pkg/builder/build.go @@ -238,7 +238,14 @@ func (b generalBuilder) build(ctx context.Context, pw progresswriter.Writer) err for _, entry := range b.entries { // Set up docker config auth. dockerConfig := config.LoadDefaultConfigFile(os.Stderr) - attachable := []session.Attachable{authprovider.NewDockerAuthProvider(dockerConfig, map[string]*authprovider.AuthTLSConfig{})} + attachable := []session.Attachable{ + authprovider.NewDockerAuthProvider( + authprovider.DockerAuthProviderConfig{ + ConfigFile: dockerConfig, + TLSConfigs: map[string]*authprovider.AuthTLSConfig{}, + }, + ), + } b.logger.WithFields(logrus.Fields{ "type": entry.Type, }).Debug("build image with buildkit") diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 0ece2bb26..44f561dc0 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -15,6 +15,7 @@ package docker import ( + "bytes" "context" "encoding/base64" "encoding/json" @@ -267,7 +268,8 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * "buildkit-config": bc, }) logger.Debug("starting buildkitd") - if _, _, err := c.ImageInspectWithRaw(ctx, tag); err != nil { + var buf bytes.Buffer + if _, err := c.ImageInspect(ctx, tag, client.ImageInspectWithRawResponse(&buf)); err != nil { if !client.IsErrNotFound(err) { return "", errors.Wrap(err, "failed to inspect image") } @@ -386,7 +388,7 @@ func (c dockerClient) GetStatus(ctx context.Context, cname string) (containerTyp // Load loads the docker image from the reader into the docker host. // It's up to the caller to close the io.ReadCloser. func (c dockerClient) Load(ctx context.Context, r io.ReadCloser, quiet bool) error { - resp, err := c.ImageLoad(ctx, r, quiet) + resp, err := c.ImageLoad(ctx, r, client.ImageLoadWithQuiet(quiet)) if err != nil { return err } diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 9d005a08d..9bb301606 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -24,7 +24,7 @@ import ( "time" "github.com/cockroachdb/errors" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/container" dockerimage "github.com/docker/docker/api/types/image" "github.com/sirupsen/logrus" @@ -287,14 +287,14 @@ func (nc *nerdctlClient) containerExists(ctx context.Context, tag string) (bool, return err == nil, err } -func (nc *nerdctlClient) containerInspect(ctx context.Context, tag string) (*types.ContainerJSON, error) { +func (nc *nerdctlClient) containerInspect(ctx context.Context, tag string) (*container.InspectResponse, error) { out, err := nc.exec(ctx, "inspect", tag) if err != nil { // TODO(kweizh): check not found return nil, err } - cs := []types.ContainerJSON{} + cs := []container.InspectResponse{} err = json.Unmarshal([]byte(out), &cs) if err != nil { logrus.WithError(err).Error(cs) diff --git a/pkg/lang/frontend/starlark/v1/interpreter.go b/pkg/lang/frontend/starlark/v1/interpreter.go index 0a42ed3fd..e814800fb 100644 --- a/pkg/lang/frontend/starlark/v1/interpreter.go +++ b/pkg/lang/frontend/starlark/v1/interpreter.go @@ -26,6 +26,7 @@ import ( "github.com/cockroachdb/errors" "github.com/sirupsen/logrus" "go.starlark.net/starlark" + "go.starlark.net/syntax" interp "github.com/tensorchord/envd/pkg/lang/frontend/starlark" "github.com/tensorchord/envd/pkg/lang/frontend/starlark/v1/config" @@ -42,6 +43,19 @@ type entry struct { err error } +func envdStarlarkResolveOptions() *syntax.FileOptions { + return &syntax.FileOptions{ + // resolver + Set: false, + While: false, + TopLevelControl: false, + GlobalReassign: false, + LoadBindsGlobally: false, + // compiler + Recursion: true, + } +} + // generalInterpreter is the interpreter implementation for Starlark. // Please refer to https://github.com/google/starlark-go type generalInterpreter struct { @@ -104,7 +118,7 @@ func (s *generalInterpreter) exec(thread *starlark.Thread, module string) (starl if !strings.HasPrefix(module, universe.GitPrefix) { var data interface{} - globals, err := starlark.ExecFile(thread, module, data, s.predeclared) + globals, err := starlark.ExecFileOptions(envdStarlarkResolveOptions(), thread, module, data, s.predeclared) e = &entry{globals, err} } else { // exec remote git repo @@ -135,7 +149,7 @@ func (s *generalInterpreter) loadGitModule(thread *starlark.Thread, path string) if d.IsDir() || !strings.HasSuffix(d.Name(), ".envd") { return nil } - dict, err := starlark.ExecFile(thread, path, src, s.predeclared) + dict, err := starlark.ExecFileOptions(envdStarlarkResolveOptions(), thread, path, src, s.predeclared) if err != nil { return err } @@ -181,7 +195,7 @@ func (s generalInterpreter) ExecFile(filename string, funcname string) (interfac func (s generalInterpreter) Eval(script string) (interface{}, error) { thread := s.NewThread(script) - return starlark.ExecFile(thread, "", script, s.predeclared) + return starlark.ExecFileOptions(envdStarlarkResolveOptions(), thread, "", script, s.predeclared) } func GetEnvdProgramHash(filename string) (string, error) { @@ -193,7 +207,7 @@ func GetEnvdProgramHash(filename string) (string, error) { funcAlwaysHas := func(x string) bool { return true } - _, prog, err := starlark.SourceProgram(filename, envdSrc, funcAlwaysHas) + _, prog, err := starlark.SourceProgramOptions(envdStarlarkResolveOptions(), filename, envdSrc, funcAlwaysHas) if err != nil { return "", err } diff --git a/pkg/lang/frontend/starlark/v1/interpreter_test.go b/pkg/lang/frontend/starlark/v1/interpreter_test.go index 32122a7f5..7ba8a25ab 100644 --- a/pkg/lang/frontend/starlark/v1/interpreter_test.go +++ b/pkg/lang/frontend/starlark/v1/interpreter_test.go @@ -24,6 +24,6 @@ var _ = Describe("Starlark", func() { filename := "testdata/test.envd" hash, err := GetEnvdProgramHash(filename) Expect(err).NotTo(HaveOccurred()) - Expect(hash).To(Equal("1292b11c2ac16f70")) + Expect(hash).To(Equal("42bc7dd445dbc5a0")) }) }) diff --git a/pkg/types/envd.go b/pkg/types/envd.go index cc9d3fee1..c5a5f47c0 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -19,7 +19,7 @@ import ( "fmt" "github.com/cockroachdb/errors" - "github.com/docker/docker/api/types" + "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/image" dockersystem "github.com/docker/docker/api/types/system" "github.com/moby/buildkit/util/system" @@ -205,7 +205,7 @@ func NewImageFromMeta(meta servertypes.ImageMeta) (*EnvdImage, error) { return &img, nil } -func NewEnvironmentFromContainer(ctr types.Container) (*EnvdEnvironment, error) { +func NewEnvironmentFromContainer(ctr container.Summary) (*EnvdEnvironment, error) { env := EnvdEnvironment{ Environment: servertypes.Environment{ Spec: servertypes.EnvironmentSpec{Image: ctr.Image}, @@ -265,7 +265,7 @@ func newManifest(labels map[string]string) (EnvdManifest, error) { return manifest, nil } -func NewDependencyFromContainerJSON(ctr types.ContainerJSON) (*Dependency, error) { +func NewDependencyFromContainerJSON(ctr container.InspectResponse) (*Dependency, error) { return NewDependencyFromLabels(ctr.Config.Labels) } @@ -273,7 +273,7 @@ func NewDependencyFromImageSummary(img image.Summary) (*Dependency, error) { return NewDependencyFromLabels(img.Labels) } -func NewPortBindingFromContainerJSON(ctr types.ContainerJSON) ([]PortBinding, error) { +func NewPortBindingFromContainerJSON(ctr container.InspectResponse) ([]PortBinding, error) { var labels []servertypes.EnvironmentPort err := json.Unmarshal([]byte(ctr.Config.Labels[ImageLabelPorts]), &labels) if err != nil { From bdac0934353dd7ce98bc7838172e1c7cae1e213e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 11:23:12 +0800 Subject: [PATCH 340/355] docs: updated CHANGELOG.md (#1994) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: kemingy <12974685+kemingy@users.noreply.github.com> --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ecdfad6a..3563e9c88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## v1.1.0 (2025-03-10) + + * [207c30e](https://github.com/tensorchord/envd/commit/207c30ee9556bb6915996166507fbc81ec26309a) feat: add pre-defined envd template (#1991) + * [1089f98](https://github.com/tensorchord/envd/commit/1089f98474ca85f453c90366acecf9f6a505aad0) feat: support uv (#1990) + +### Contributors + + * Keming + ## v1.0.1 (2025-02-17) From a78a2454ca633ad403b12920ef71a534f8b819d5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 11 Mar 2025 16:57:34 +0800 Subject: [PATCH 341/355] feat: emb the whole template/*.envd, avoid random map key order (#1995) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/new.go | 66 +++++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/pkg/app/new.go b/pkg/app/new.go index f694ca9ae..0239b3f42 100644 --- a/pkg/app/new.go +++ b/pkg/app/new.go @@ -15,7 +15,7 @@ package app import ( - _ "embed" + "embed" "fmt" "os" "path/filepath" @@ -29,31 +29,41 @@ import ( ) var ( - //go:embed template/uv.envd - templateUV string - //go:embed template/conda.envd - templateConda string - //go:embed template/torch.envd - templateTorch string - - templates = map[string]string{ - "uv": templateUV, - "conda": templateConda, - "torch": templateTorch, - } + //go:embed template/*.envd + envdTemplateDir embed.FS + defaultEnvdTemplates []EnvdTemplate ) -func joinKeysToString(table map[string]string) string { - keys := make([]string, 0, len(table)) - for k := range table { - keys = append(keys, k) +type EnvdTemplate struct { + name string + content []byte +} + +func init() { + entries, err := envdTemplateDir.ReadDir("template") + if err != nil { + panic(errors.Wrap(err, "failed to read template directory")) + } + for _, entry := range entries { + if entry.IsDir() { + continue + } + name := strings.TrimSuffix(entry.Name(), ".envd") + content, err := envdTemplateDir.ReadFile(filepath.Join("template", entry.Name())) + if err != nil { + panic(errors.Wrapf(err, "failed to read template file: %s", entry.Name())) + } + defaultEnvdTemplates = append(defaultEnvdTemplates, EnvdTemplate{name: name, content: content}) } - return strings.Join(keys, ", ") } func isDefaultTemplate(name string) bool { - _, ok := templates[name] - return ok + for _, template := range defaultEnvdTemplates { + if template.name == name { + return true + } + } + return false } var CommandNew = &cli.Command{ @@ -67,7 +77,7 @@ var CommandNew = &cli.Command{ Flags: []cli.Flag{ &cli.StringFlag{ Name: "template", - Usage: fmt.Sprintf("Template name to use (`envd bootstrap` will add [%s])", joinKeysToString(templates)), + Usage: "Template name to use (`envd bootstrap` will add some default templates to '$HOME/.config/envd/templates')", Aliases: []string{"t"}, Required: true, }, @@ -136,24 +146,24 @@ func newCommand(clicontext *cli.Context) error { } func addTemplates(clicontext *cli.Context) error { - for name, content := range templates { - file, err := fileutil.TemplateFile(name + ".envd") + for _, template := range defaultEnvdTemplates { + file, err := fileutil.TemplateFile(template.name + ".envd") if err != nil { - return errors.Wrapf(err, "failed to get template file path: %s", name) + return errors.Wrapf(err, "failed to get template file path: %s", template.name) } exist, err := fileutil.FileExists(file) if err != nil { return errors.Wrapf(err, "failed to check file exists: %s", file) } if exist { - logrus.Debugf("Template file `%s` already exists in `%s`", name, file) + logrus.Debugf("Template file `%s` already exists in `%s`", template.name, file) continue } - err = os.WriteFile(file, []byte(content), 0644) + err = os.WriteFile(file, template.content, 0644) if err != nil { - return errors.Wrapf(err, "failed to write template file: %s", name) + return errors.Wrapf(err, "failed to write template file: %s", template.name) } - logrus.Debugf("Template file `%s` is added to `%s`", name, file) + logrus.Debugf("Template file `%s` is added to `%s`", template.name, file) } return nil From dd3eeca89c21f890e5b9d844aa6e38b15505ab67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Mar 2025 10:48:43 +0800 Subject: [PATCH 342/355] chore(deps): bump github.com/containerd/containerd/v2 from 2.0.3 to 2.0.4 (#1996) chore(deps): bump github.com/containerd/containerd/v2 Bumps [github.com/containerd/containerd/v2](https://github.com/containerd/containerd) from 2.0.3 to 2.0.4. - [Release notes](https://github.com/containerd/containerd/releases) - [Changelog](https://github.com/containerd/containerd/blob/main/RELEASES.md) - [Commits](https://github.com/containerd/containerd/compare/v2.0.3...v2.0.4) --- updated-dependencies: - dependency-name: github.com/containerd/containerd/v2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5bb8e5dca..3585e2e38 100644 --- a/go.mod +++ b/go.mod @@ -83,7 +83,7 @@ require ( github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect github.com/cockroachdb/redact v1.1.6 // indirect github.com/containerd/containerd/api v1.8.0 // indirect - github.com/containerd/containerd/v2 v2.0.3 // indirect + github.com/containerd/containerd/v2 v2.0.4 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect diff --git a/go.sum b/go.sum index 297d754a2..0033e4d8c 100644 --- a/go.sum +++ b/go.sum @@ -748,8 +748,8 @@ github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMX github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= -github.com/containerd/containerd/v2 v2.0.3 h1:zBKgwgZsuu+LPCMzCLgA4sC4MiZzZ59ZT31XkmiISQM= -github.com/containerd/containerd/v2 v2.0.3/go.mod h1:5j9QUUaV/cy9ZeAx4S+8n9ffpf+iYnEj4jiExgcbuLY= +github.com/containerd/containerd/v2 v2.0.4 h1:+r7yJMwhTfMm3CDyiBjMBQO8a9CTBxL2Bg/JtqtIwB8= +github.com/containerd/containerd/v2 v2.0.4/go.mod h1:5j9QUUaV/cy9ZeAx4S+8n9ffpf+iYnEj4jiExgcbuLY= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= From 2506ede9f274403e66360029f98f6bd12faac243 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 31 Mar 2025 17:13:24 +0800 Subject: [PATCH 343/355] feat: bump fish to the official release version (#2000) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/shell.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index 240c95fd8..da65bffdc 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -15,6 +15,8 @@ package v1 import ( + "fmt" + "github.com/cockroachdb/errors" "github.com/moby/buildkit/client/llb" @@ -54,7 +56,8 @@ renamed = "r" deleted = "x" ` - fishVersion = "4.0b1" + fishVersion = "4.0.1" + fishAssetURL = "https://github.com/fish-shell/fish-shell/releases/download/%[1]s/fish-static-$(uname -m)-%[1]s.tar.xz" ) func (g *generalGraph) compileShell(root llb.State) (_ llb.State, err error) { @@ -142,14 +145,15 @@ func (g generalGraph) compileZSH(root llb.State) (llb.State, error) { func (g generalGraph) compileFish(root llb.State) llb.State { base := llb.Image(builderImage) + url := fmt.Sprintf(fishAssetURL, fishVersion) builder := base.Run( - llb.Shlexf(`sh -c "wget -qO- https://github.com/fish-shell/fish-shell/releases/download/%s/fish-static-linux-$(uname -m).tar.xz | tar -xJf - -C /tmp || exit 1"`, fishVersion), + llb.Shlexf(`sh -c "wget -qO- %s | tar -xJf - -C /tmp || exit 1"`, url), llb.WithCustomName("[internal] download fish shell"), ).Root() root = root.File( llb.Copy(builder, "/tmp/fish", "/usr/bin/fish"), llb.WithCustomName("[internal] copy fish shell from the builder image")). - Run(llb.Shlex("fish --install"), + Run(llb.Shlex(`sh -c "echo yes | fish --install"`), llb.WithCustomName("[internal] install fish shell")).Root() return root From 8514a4aee1bc96c9677995cedc0cc93e20063670 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 2 Apr 2025 08:21:45 +0800 Subject: [PATCH 344/355] fix: locale for both dev=True/False (#2010) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/compile.go | 2 +- pkg/lang/ir/v1/conda.go | 2 +- pkg/lang/ir/v1/get_conda.sh | 6 +++--- pkg/lang/ir/v1/system.go | 2 -- pkg/types/envd.go | 4 ++-- 5 files changed, 7 insertions(+), 9 deletions(-) diff --git a/pkg/lang/ir/v1/compile.go b/pkg/lang/ir/v1/compile.go index e5e88bdf3..842dc2d62 100644 --- a/pkg/lang/ir/v1/compile.go +++ b/pkg/lang/ir/v1/compile.go @@ -162,7 +162,7 @@ func (g *generalGraph) Compile(ctx context.Context, envPath string, pub string, func (g generalGraph) GetEnviron() []string { return append(g.EnvString(), - "LC_ALL=en_US.UTF-8", + "LC_ALL=C.UTF-8", "LANG=C.UTF-8", ) } diff --git a/pkg/lang/ir/v1/conda.go b/pkg/lang/ir/v1/conda.go index ee32c65b4..4bddf9d13 100644 --- a/pkg/lang/ir/v1/conda.go +++ b/pkg/lang/ir/v1/conda.go @@ -29,7 +29,7 @@ import ( const ( builderImage = "curlimages/curl:8.11.1" - condaVersionDefault = "py311_24.11.1-0" + condaVersionDefault = "py311_25.1.1-2" microMambaImage = "mambaorg/micromamba:2.0.6" condaRootPrefix = "/opt/conda" condaBinDir = "/opt/conda/bin" diff --git a/pkg/lang/ir/v1/get_conda.sh b/pkg/lang/ir/v1/get_conda.sh index 0175c0408..17c6caff4 100644 --- a/pkg/lang/ir/v1/get_conda.sh +++ b/pkg/lang/ir/v1/get_conda.sh @@ -2,13 +2,13 @@ set -euo pipefail && \ UNAME_M="$(uname -m)" && \ if [ "${UNAME_M}" = "x86_64" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-x86_64.sh"; \ - SHA256SUM="807774bae6cd87132094458217ebf713df436f64779faf9bb4c3d4b6615c1e3a"; \ + SHA256SUM="d8c1645776c0758214e4191c605abe5878002051316bd423f2b14b22d6cb4251"; \ elif [ "${UNAME_M}" = "s390x" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-s390x.sh"; \ - SHA256SUM="bb499b18dbcbb2d89b22f91fe26fe661f5ed1f1944fdc743560d69cd52a2468f"; \ + SHA256SUM="0b4d5a3f16dcb2d230ba5dfdfdb848c854006aab6dd1bd3dbf29fcddf04b07a4"; \ elif [ "${UNAME_M}" = "aarch64" ]; then \ MINICONDA_URL="https://repo.anaconda.com/miniconda/Miniconda3-${CONDA_VERSION}-Linux-aarch64.sh"; \ - SHA256SUM="a8846ade7a5ddd9b6a6546590054d70d1c2cbe4fbe8c79fb70227e8fd93ef9f8"; \ + SHA256SUM="8a1d4407fce7ec552ac6ed655ce93d83549e02b819cacefbb7f640f9051e638b"; \ fi && \ wget "${MINICONDA_URL}" -O /tmp/miniconda.sh && \ echo "${SHA256SUM} /tmp/miniconda.sh" > /tmp/shasum && \ diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 94288f5c4..2e319ef4b 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -226,8 +226,6 @@ func (g *generalGraph) compileDevPackages(root llb.State) llb.State { sb.WriteString("apt-get install -y --no-install-recommends --no-install-suggests --fix-missing ") sb.WriteString(strings.Join(types.BaseAptPackage, " ")) sb.WriteString("&& rm -rf /var/lib/apt/lists/* ") - // shell prompt - sb.WriteString("&& locale-gen en_US.UTF-8") run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), llb.WithCustomName("[internal] install built-in packages")) diff --git a/pkg/types/envd.go b/pkg/types/envd.go index c5a5f47c0..e456599ed 100644 --- a/pkg/types/envd.go +++ b/pkg/types/envd.go @@ -55,8 +55,8 @@ var BaseEnvironment = []struct { }{ {"DEBIAN_FRONTEND", "noninteractive"}, {"PATH", DefaultSystemPath}, - {"LANG", "en_US.UTF-8"}, - {"LC_ALL", "en_US.UTF-8"}, + {"LANG", "C.UTF-8"}, + {"LC_ALL", "C.UTF-8"}, } var BaseAptPackage = []string{ "bash-static", From 5f1f397ed6fbe32bd6b40c31300ebe12b7643155 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 15 Apr 2025 11:12:56 +0800 Subject: [PATCH 345/355] feat: support pixi as an alternative to conda (#2012) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .gitignore | 1 + e2e/language/python_test.go | 13 +++ e2e/language/testdata/python/pixi/build.envd | 9 ++ e2e/language/testdata/python/pixi/pixi.toml | 13 +++ envd/api/v1/install.py | 16 ++++ .../frontend/starlark/v1/install/const.go | 1 + .../frontend/starlark/v1/install/install.go | 16 ++++ pkg/lang/ir/types.go | 5 ++ pkg/lang/ir/v1/interface.go | 12 +++ pkg/lang/ir/v1/pixi.go | 89 +++++++++++++++++++ pkg/lang/ir/v1/shell.go | 33 ++++++- pkg/lang/ir/v1/system.go | 3 + pkg/lang/ir/v1/types.go | 1 + 13 files changed, 209 insertions(+), 3 deletions(-) create mode 100644 e2e/language/testdata/python/pixi/build.envd create mode 100644 e2e/language/testdata/python/pixi/pixi.toml create mode 100644 pkg/lang/ir/v1/pixi.go diff --git a/.gitignore b/.gitignore index ba8962223..7f9ac9c8b 100644 --- a/.gitignore +++ b/.gitignore @@ -67,6 +67,7 @@ share/python-wheels/ *.egg MANIFEST .GIT_TAG_INFO +.pixi/ test.tar diff --git a/e2e/language/python_test.go b/e2e/language/python_test.go index d9cb61456..76509eb06 100644 --- a/e2e/language/python_test.go +++ b/e2e/language/python_test.go @@ -73,4 +73,17 @@ var _ = Describe("python", Ordered, func() { }) AfterEach(e.DestroyContainer()) }) + + Describe("Should build pixi with Python successfully", func() { + exampleName := "python/pixi" + e := e2e.NewExample(e2e.BuildContextDirWithName(exampleName), testcase) + BeforeAll(e.BuildImage(true)) + BeforeEach(e.RunContainer()) + It("Should have Python and dependencies installed", func() { + res, err := e.ExecRuntimeCommand("pixi-via") + Expect(err).To(BeNil()) + Expect(res).To(ContainSubstring("via args parser")) + }) + AfterEach(e.DestroyContainer()) + }) }) diff --git a/e2e/language/testdata/python/pixi/build.envd b/e2e/language/testdata/python/pixi/build.envd new file mode 100644 index 000000000..b31fa863e --- /dev/null +++ b/e2e/language/testdata/python/pixi/build.envd @@ -0,0 +1,9 @@ +def build(): + base(dev=True) + install.pixi(use_pixi_mirror=True) + shell("fish") + runtime.command( + commands={ + "pixi-via": "pixi run -- via --help", + } + ) diff --git a/e2e/language/testdata/python/pixi/pixi.toml b/e2e/language/testdata/python/pixi/pixi.toml new file mode 100644 index 000000000..9af26bdd9 --- /dev/null +++ b/e2e/language/testdata/python/pixi/pixi.toml @@ -0,0 +1,13 @@ +[workspace] +channels = ["conda-forge"] +name = "envd_pixi_test" +platforms = ["linux-64"] +version = "0.1.0" + +[tasks] + +[dependencies] +python = "3.11.*" + +[pypi-dependencies] +via = ">=0.1.2, <0.2" diff --git a/envd/api/v1/install.py b/envd/api/v1/install.py index 6fcee7bd5..36261902a 100644 --- a/envd/api/v1/install.py +++ b/envd/api/v1/install.py @@ -43,6 +43,22 @@ def conda(use_mamba: bool = False): """ +def pixi(use_pixi_mirror: bool = False, pypi_index: Optional[str] = None): + """Install Pixi (https://github.com/prefix-dev/pixi). + + `pixi` is an alternative to `conda` that is written in Rust and provides faster + dependency resolution and installation. It also simplify the project management. + + This doesn't support installing Python packages through `install.python_packages` + because that part should be managed by `pixi`. You can run `pixi shell` in the + `envd` environment to sync all the dependencies. + + Args: + use_pixi_mirror (bool): use pixi mirror + pypi_index (Optional[str]): customize pypi index url + """ + + def uv(python_version: str = "3.11"): """Install UV (an extremely fast Python package and project manager). diff --git a/pkg/lang/frontend/starlark/v1/install/const.go b/pkg/lang/frontend/starlark/v1/install/const.go index 37fde4941..83d21b55c 100644 --- a/pkg/lang/frontend/starlark/v1/install/const.go +++ b/pkg/lang/frontend/starlark/v1/install/const.go @@ -19,6 +19,7 @@ const ( rulePython = "install.python" ruleConda = "install.conda" ruleUV = "install.uv" + rulePixi = "install.pixi" ruleRLang = "install.r_lang" ruleJulia = "install.julia" diff --git a/pkg/lang/frontend/starlark/v1/install/install.go b/pkg/lang/frontend/starlark/v1/install/install.go index 2bd9c2b3e..2a33b46aa 100644 --- a/pkg/lang/frontend/starlark/v1/install/install.go +++ b/pkg/lang/frontend/starlark/v1/install/install.go @@ -35,6 +35,7 @@ var Module = &starlarkstruct.Module{ "python": starlark.NewBuiltin(rulePython, ruleFuncPython), "conda": starlark.NewBuiltin(ruleConda, ruleFuncConda), "uv": starlark.NewBuiltin(ruleUV, ruleFuncUV), + "pixi": starlark.NewBuiltin(rulePixi, ruleFuncPixi), "r_lang": starlark.NewBuiltin(ruleRLang, ruleFuncRLang), "julia": starlark.NewBuiltin(ruleJulia, ruleFuncJulia), // packages @@ -78,6 +79,21 @@ func ruleFuncConda(thread *starlark.Thread, _ *starlark.Builtin, return starlark.None, nil } +func ruleFuncPixi(thread *starlark.Thread, _ *starlark.Builtin, + args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { + + usePixiMirror := false + var pypiIndex string + + if err := starlark.UnpackArgs(rulePixi, args, kwargs, "use_pixi_mirror?", &usePixiMirror, "pypi_index?", &pypiIndex); err != nil { + return nil, err + } + + logger.Debugf("rule `%s` is invoked: use_pixi_mirror=%t, pypi_index=%v", rulePixi, usePixiMirror, pypiIndex) + ir.Pixi(usePixiMirror, pypiIndex) + return starlark.None, nil +} + func ruleFuncUV(thread *starlark.Thread, _ *starlark.Builtin, args starlark.Tuple, kwargs []starlark.Tuple) (starlark.Value, error) { logger.Debugf("rule `%s` is invoked", ruleUV) diff --git a/pkg/lang/ir/types.go b/pkg/lang/ir/types.go index a0da2f1c2..7a0fab8f7 100644 --- a/pkg/lang/ir/types.go +++ b/pkg/lang/ir/types.go @@ -65,6 +65,11 @@ type UVConfig struct { PythonVersion string } +type PixiConfig struct { + UsePixiMirror bool + PyPIIndex *string +} + type GitConfig struct { Name string Email string diff --git a/pkg/lang/ir/v1/interface.go b/pkg/lang/ir/v1/interface.go index 95ecc6e6c..0360219a0 100644 --- a/pkg/lang/ir/v1/interface.go +++ b/pkg/lang/ir/v1/interface.go @@ -58,6 +58,18 @@ func Conda(mamba bool) { } } +func Pixi(usePixiMirror bool, pypiIndex string) { + g := DefaultGraph.(*generalGraph) + + g.PixiConfig = &ir.PixiConfig{ + UsePixiMirror: usePixiMirror, + PyPIIndex: nil, + } + if len(pypiIndex) != 0 { + g.PixiConfig.PyPIIndex = &pypiIndex + } +} + func UV(pythonVersion string) { g := DefaultGraph.(*generalGraph) diff --git a/pkg/lang/ir/v1/pixi.go b/pkg/lang/ir/v1/pixi.go new file mode 100644 index 000000000..33c19e2a8 --- /dev/null +++ b/pkg/lang/ir/v1/pixi.go @@ -0,0 +1,89 @@ +// Copyright 2025 The envd Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v1 + +import ( + "bytes" + "text/template" + + "github.com/moby/buildkit/client/llb" + "github.com/sirupsen/logrus" +) + +const ( + pixiVersion = "0.45.0" + pixiRelease = "https://github.com/prefix-dev/pixi/releases/download/v%s/pixi-$(uname -m)-unknown-linux-musl.tar.gz" + pixiConfigTemplate = ` +{{- if .UsePixiMirror -}} +[mirrors] +"https://conda.anaconda.org" = ["https://prefix.dev/"] +# prefix.dev doesn't mirror conda-forge's label channels +# pixi uses the longest matching prefix for the mirror +"https://conda.anaconda.org/conda-forge/label" = [ + "https://conda.anaconda.org/conda-forge/label", +] +{{- end -}} +{{- if .PyPIIndex -}} +[pypi-config] +index-url = "{{ .PyPIIndex }}" +{{- end -}} +` +) + +func (g generalGraph) compilePixi(root llb.State) llb.State { + if g.PixiConfig == nil { + return root + } + + base := llb.Image(builderImage) + builder := base.Run( + llb.Shlexf(`sh -c "wget -qO- https://github.com/prefix-dev/pixi/releases/download/v%s/pixi-$(uname -m)-unknown-linux-musl.tar.gz | tar -xz -C /tmp || exit 1"`, pixiVersion), + llb.WithCustomNamef("[internal] download pixi %s", pixiVersion), + ).Root() + + root = root.File( + llb.Copy(builder, "/tmp/pixi", "/usr/bin/pixi"), llb.WithCustomName("[internal] install pixi"), + ) + + return g.compilePixiConfig(root) +} + +func (g generalGraph) compilePixiConfig(root llb.State) llb.State { + if !g.PixiConfig.UsePixiMirror && g.PixiConfig.PyPIIndex == nil { + return root + } + + root = root.File( + llb.Mkdir("/etc/pixi", 0777, llb.WithParents(true)), + llb.WithCustomName("[internal] create pixi config directory"), + ) + + tmpl, err := template.New("pixi-config").Parse(pixiConfigTemplate) + if err != nil { + logrus.Errorf("failed to parse pixi config template: %v", err) + return root + } + var buf bytes.Buffer + err = tmpl.Execute(&buf, g.PixiConfig) + if err != nil { + logrus.Errorf("failed to execute pixi config template: %v", err) + return root + } + root = root.File( + llb.Mkfile("/etc/pixi/config.toml", 0755, buf.Bytes(), llb.WithUIDGID(g.uid, g.gid)), + llb.WithCustomName("[internal] create pixi config file"), + ) + return root +} diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index da65bffdc..3730f9f8f 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -72,13 +72,40 @@ func (g *generalGraph) compileShell(root llb.State) (_ llb.State, err error) { g.RuntimeEnviron["SHELL"] = "/usr/bin/fish" root = g.compileFish(root) } - if g.CondaConfig != nil { - root = g.compileCondaShell(root) - } + root = g.compileCondaShell(root) + root = g.compilePixiShell(root) return root, nil } +func (g generalGraph) compilePixiShell(root llb.State) llb.State { + if g.PixiConfig == nil { + return root + } + + if g.Shell == shellZSH { + root = root.Run( + llb.Shlex(`sh -c 'echo "eval \"\$(pixi completion --shell zsh)\"" >> ~/.zshrc'`), + llb.WithCustomName("[internal] setting pixi zsh config"), + ).Root() + } else if g.Shell == shellFish { + root = root.Run( + llb.Shlex(`sh -c 'echo "pixi completion --shell fish | source" >> ~/.config/fish/config.fish'`), + llb.WithCustomName("[internal] setting pixi fish config"), + ).Root() + } else if g.Shell == shellBASH { + root = root.Run( + llb.Shlex(`sh -c 'echo "eval \"\$(pixi completion --shell bash)\"" >> ~/.bashrc'`), + llb.WithCustomName("[internal] setting pixi bash config"), + ).Root() + } + return root +} + func (g *generalGraph) compileCondaShell(root llb.State) llb.State { + if g.CondaConfig == nil { + return root + } + findDir := fileutil.DefaultHomeDir if g.Dev { findDir = fileutil.EnvdHomeDir diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 2e319ef4b..4f27eb276 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -207,6 +207,9 @@ func (g *generalGraph) compileLanguagePackages(root llb.State) llb.State { if g.UVConfig != nil { pack = g.compileUV(pack) } + if g.PixiConfig != nil { + pack = g.compilePixi(pack) + } for _, language := range g.Languages { switch language.Name { diff --git a/pkg/lang/ir/v1/types.go b/pkg/lang/ir/v1/types.go index 394cb0ed0..5e84f055f 100644 --- a/pkg/lang/ir/v1/types.go +++ b/pkg/lang/ir/v1/types.go @@ -73,6 +73,7 @@ type generalGraph struct { *ir.GitConfig *ir.CondaConfig *ir.UVConfig + *ir.PixiConfig *ir.RStudioServerConfig Writer compileui.Writer `json:"-"` From a1a315e8e901fb5c04d52d4c8c0b59fe4da12be5 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 22 Apr 2025 10:05:23 +0800 Subject: [PATCH 346/355] feat: add pixi template (#2014) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/app/template/pixi.envd | 4 ++++ pkg/lang/ir/v1/pixi.go | 1 - pkg/lang/ir/v1/system.go | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 pkg/app/template/pixi.envd diff --git a/pkg/app/template/pixi.envd b/pkg/app/template/pixi.envd new file mode 100644 index 000000000..0b0f2181e --- /dev/null +++ b/pkg/app/template/pixi.envd @@ -0,0 +1,4 @@ +def build(): + base(dev=True) + install.pixi() + shell("fish") diff --git a/pkg/lang/ir/v1/pixi.go b/pkg/lang/ir/v1/pixi.go index 33c19e2a8..852571c2a 100644 --- a/pkg/lang/ir/v1/pixi.go +++ b/pkg/lang/ir/v1/pixi.go @@ -24,7 +24,6 @@ import ( const ( pixiVersion = "0.45.0" - pixiRelease = "https://github.com/prefix-dev/pixi/releases/download/v%s/pixi-$(uname -m)-unknown-linux-musl.tar.gz" pixiConfigTemplate = ` {{- if .UsePixiMirror -}} [mirrors] diff --git a/pkg/lang/ir/v1/system.go b/pkg/lang/ir/v1/system.go index 4f27eb276..1f7b651c0 100644 --- a/pkg/lang/ir/v1/system.go +++ b/pkg/lang/ir/v1/system.go @@ -228,7 +228,7 @@ func (g *generalGraph) compileDevPackages(root llb.State) llb.State { sb.WriteString("apt-get update && apt-get install -y apt-utils && ") sb.WriteString("apt-get install -y --no-install-recommends --no-install-suggests --fix-missing ") sb.WriteString(strings.Join(types.BaseAptPackage, " ")) - sb.WriteString("&& rm -rf /var/lib/apt/lists/* ") + sb.WriteString("&& rm -rf /var/lib/apt/lists/*") run := root.Run(llb.Shlexf(`bash -c "%s"`, sb.String()), llb.WithCustomName("[internal] install built-in packages")) From 24df0dbba62ba5ac877ba1cc2311893bb8ea7ec9 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Wed, 23 Apr 2025 11:01:30 +0800 Subject: [PATCH 347/355] chore: update to golangci-lint v2 (#2016) * chore: update to golangci-lint v2 Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix typo Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- .github/dependabot.yml | 8 ++++ .github/workflows/CI.yml | 2 +- .github/workflows/changelog.yaml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/release.yml | 2 +- .golangci.yml | 61 +++++++++++++++++++++--------- pkg/app/init.go | 8 ++-- pkg/app/run.go | 5 ++- pkg/driver/docker/docker.go | 28 ++++++-------- pkg/driver/nerdctl/nerdctl.go | 30 +++++++-------- pkg/lang/ir/v1/shell.go | 25 ++++++------ pkg/progress/progressui/display.go | 2 +- 12 files changed, 103 insertions(+), 72 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index f21be2eb0..ab2ea2f24 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -4,8 +4,16 @@ updates: directory: "/" schedule: interval: "monthly" + groups: + all-dependencies: + patterns: + - "*" - package-ecosystem: "github-actions" directory: "/" schedule: interval: "monthly" + groups: + all-actions: + patterns: + - "*" diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 722a13806..160e67571 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -50,7 +50,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v7 with: args: --timeout=5m version: latest diff --git a/.github/workflows/changelog.yaml b/.github/workflows/changelog.yaml index 8ac254644..a60e5e267 100644 --- a/.github/workflows/changelog.yaml +++ b/.github/workflows/changelog.yaml @@ -17,7 +17,7 @@ jobs: - run: git fetch --prune --prune-tags - run: git tag -l 'v*' - run: ./hack/changelog.sh > CHANGELOG.md - - uses: peter-evans/create-pull-request@v6 + - uses: peter-evans/create-pull-request@v7 with: title: 'docs: updated CHANGELOG.md' commit-message: 'docs: updated CHANGELOG.md' diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index b59f892f8..fb779fcb9 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -25,7 +25,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v6 + uses: golangci/golangci-lint-action@v7 with: args: --timeout=5m version: latest diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 34ab4274b..65fe02c0e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,7 +69,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.23.0 + uses: pypa/cibuildwheel@v2.23.2 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 diff --git a/.golangci.yml b/.golangci.yml index 2535381fe..01ca2038d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,26 +1,53 @@ +version: "2" linters: enable: + - staticcheck - bodyclose - - errcheck - - errorlint - copyloopvar - - gofmt - - goimports - - gosimple - - govet - - ineffassign + - errorlint - misspell - revive - sqlclosecheck - - staticcheck - - typecheck - unconvert - unparam - - unused -linters-settings: - goimports: - local-prefixes: github.com/tensorchord/envd/ - revive: - rules: - # available rules: https://github.com/mgechev/revive#available-rules - - name: indent-error-flow + settings: + revive: + rules: + - name: indent-error-flow + staticcheck: + checks: + - all + - -ST1000 + - -ST1003 + - -ST1016 + - -ST1020 + - -ST1021 + - -ST1022 + - -QF1001 + - -QF1007 + - -QF1008 + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + paths: + - third_party$ + - builtin$ + - examples$ +formatters: + enable: + - gofmt + - goimports + settings: + goimports: + local-prefixes: + - github.com/tensorchord/envd/ + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/pkg/app/init.go b/pkg/app/init.go index ab90b2e64..8839d7922 100644 --- a/pkg/app/init.go +++ b/pkg/app/init.go @@ -148,12 +148,12 @@ func initCommand(clicontext *cli.Context) error { "init", telemetry.AddField("duration", time.Since(start).Seconds())) }(time.Now()) - if lang == "python" { - err = InitPythonEnv(buildContext) - if err != nil { + switch lang { + case "python": + if err = InitPythonEnv(buildContext); err != nil { return err } - } else if lang == "r" { + case "r": startQuestion(RPackageChoice) } diff --git a/pkg/app/run.go b/pkg/app/run.go index 0fbded4c1..1192bfe2d 100644 --- a/pkg/app/run.go +++ b/pkg/app/run.go @@ -146,14 +146,15 @@ func run(clicontext *cli.Context) error { ShmSize: clicontext.Int("shm-size"), EnvironmentName: name, } - if c.Runner == types.RunnerTypeEnvdServer { + switch c.Runner { + case types.RunnerTypeEnvdServer: opt.EnvdServerSource = &envd.EnvdServerSource{ Sync: clicontext.Bool("sync"), } if len(clicontext.StringSlice("volume")) > 0 { return errors.New("volume is not supported for envd-server runner") } - } else if c.Runner == types.RunnerTypeDocker { + case types.RunnerTypeDocker: opt.DockerSource = &envd.DockerSource{ MountOptions: clicontext.StringSlice("volume"), } diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index 44f561dc0..f6ce2afea 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -540,38 +540,34 @@ func (c dockerClient) handleContainerCreated(ctx context.Context, "status": status, }) - if status == containerType.StatusPaused { + switch status { + case containerType.StatusPaused: logger.Info("container was paused, unpause it now...") - _, err := c.ResumeContainer(ctx, cname) - if err != nil { + if _, err := c.ResumeContainer(ctx, cname); err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to unpause container") } - } else if status == containerType.StatusExited { + case containerType.StatusExited: logger.Info("container exited, try to start it...") - err := c.ContainerStart(ctx, cname, container.StartOptions{}) - if err != nil { + if err := c.ContainerStart(ctx, cname, container.StartOptions{}); err != nil { logger.WithError(err).Error("can not run buildkitd") - return errors.Wrap(err, "failed to start exited cotaniner") + return errors.Wrap(err, "failed to start exited container") } - } else if status == containerType.StatusDead { + case containerType.StatusDead: logger.Info("container is dead, try to remove it...") - err := c.ContainerRemove(ctx, cname, container.RemoveOptions{}) - if err != nil { + if err := c.ContainerRemove(ctx, cname, container.RemoveOptions{}); err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to remove container") } - } else if status == containerType.StatusCreated { + case containerType.StatusCreated: logger.Info("container is being created") - err := c.waitUntilRunning(ctx, cname, timeout) - if err != nil { + if err := c.waitUntilRunning(ctx, cname, timeout); err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to start container") } - } else if status == containerType.StatusRemoving { + case containerType.StatusRemoving: logger.Info("container is being removed.") - err := c.waitUntilRemoved(ctx, cname, timeout) - if err != nil { + if err := c.waitUntilRemoved(ctx, cname, timeout); err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to remove container") } diff --git a/pkg/driver/nerdctl/nerdctl.go b/pkg/driver/nerdctl/nerdctl.go index 9bb301606..b8612b759 100644 --- a/pkg/driver/nerdctl/nerdctl.go +++ b/pkg/driver/nerdctl/nerdctl.go @@ -240,39 +240,35 @@ func (nc *nerdctlClient) handleContainerCreated(ctx context.Context, "status": status, }) - if status == containerType.StatusPaused { + switch status { + case containerType.StatusPaused: logger.Info("container was paused, unpause it now...") - out, err := nc.exec(ctx, "unpause", cname) - if err != nil { + if out, err := nc.exec(ctx, "unpause", cname); err != nil { logger.WithError(err).Error("can not run buildkitd", out) return errors.Wrap(err, "failed to unpause container") } - } else if status == containerType.StatusExited { + case containerType.StatusExited: logger.Info("container exited, try to start it...") - out, err := nc.exec(ctx, "start", cname) - if err != nil { + if out, err := nc.exec(ctx, "start", cname); err != nil { logger.WithError(err).Error("can not run buildkitd", out) - return errors.Wrap(err, "failed to start exited cotaniner") + return errors.Wrap(err, "failed to start exited container") } - } else if status == containerType.StatusDead { + case containerType.StatusDead: logger.Info("container is dead, try to remove it...") - out, err := nc.exec(ctx, "remove", cname) - if err != nil { + if out, err := nc.exec(ctx, "remove", cname); err != nil { logger.WithError(err).Error("can not run buildkitd", out) - return errors.Wrap(err, "failed to remove cotaniner") + return errors.Wrap(err, "failed to remove container") } - } else if status == containerType.StatusCreated { + case containerType.StatusCreated: logger.Info("container is being created.") - err := nc.waitUntilRunning(ctx, cname, timeout) - if err != nil { + if err := nc.waitUntilRunning(ctx, cname, timeout); err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to start container") } - } else if status == containerType.StatusRemoving { + case containerType.StatusRemoving: // The remaining condition is StatusRemoving, we just need to wait. logger.Info("container is being removed.") - err := nc.waitUntilRemoved(ctx, cname, timeout) - if err != nil { + if err := nc.waitUntilRemoved(ctx, cname, timeout); err != nil { logger.WithError(err).Error("can not run buildkitd") return errors.Wrap(err, "failed to remove container") } diff --git a/pkg/lang/ir/v1/shell.go b/pkg/lang/ir/v1/shell.go index 3730f9f8f..02ddb54d0 100644 --- a/pkg/lang/ir/v1/shell.go +++ b/pkg/lang/ir/v1/shell.go @@ -62,13 +62,13 @@ deleted = "x" func (g *generalGraph) compileShell(root llb.State) (_ llb.State, err error) { g.RuntimeEnviron["SHELL"] = "bash" - if g.Shell == shellZSH { + switch g.Shell { + case shellZSH: g.RuntimeEnviron["SHELL"] = "/usr/bin/zsh" - root, err = g.compileZSH(root) - if err != nil { + if root, err = g.compileZSH(root); err != nil { return llb.State{}, err } - } else if g.Shell == shellFish { + case shellFish: g.RuntimeEnviron["SHELL"] = "/usr/bin/fish" root = g.compileFish(root) } @@ -82,17 +82,18 @@ func (g generalGraph) compilePixiShell(root llb.State) llb.State { return root } - if g.Shell == shellZSH { + switch g.Shell { + case shellZSH: root = root.Run( llb.Shlex(`sh -c 'echo "eval \"\$(pixi completion --shell zsh)\"" >> ~/.zshrc'`), llb.WithCustomName("[internal] setting pixi zsh config"), ).Root() - } else if g.Shell == shellFish { + case shellFish: root = root.Run( llb.Shlex(`sh -c 'echo "pixi completion --shell fish | source" >> ~/.config/fish/config.fish'`), llb.WithCustomName("[internal] setting pixi fish config"), ).Root() - } else if g.Shell == shellBASH { + case shellBASH: root = root.Run( llb.Shlex(`sh -c 'echo "eval \"\$(pixi completion --shell bash)\"" >> ~/.bashrc'`), llb.WithCustomName("[internal] setting pixi bash config"), @@ -112,9 +113,10 @@ func (g *generalGraph) compileCondaShell(root llb.State) llb.State { } rcPath := findDir(".bashrc") activateFile := "activate" - if g.Shell == shellZSH { + switch g.Shell { + case shellZSH: rcPath = findDir(".zshrc") - } else if g.Shell == shellFish { + case shellFish: rcPath = findDir(".config/fish/config.fish") activateFile = "activate.fish" } @@ -137,11 +139,12 @@ func (g *generalGraph) compilePrompt(root llb.State) llb.State { run := config.Run(llb.Shlexf(`bash -c 'echo "eval \"\$(starship init bash)\"" >> %s'`, fileutil.EnvdHomeDir(".bashrc")), llb.WithCustomName("[internal] setting prompt bash config")).Root() - if g.Shell == shellZSH { + switch g.Shell { + case shellZSH: run = run.Run( llb.Shlexf(`bash -c 'echo "eval \"\$(starship init zsh)\"" >> %s'`, fileutil.EnvdHomeDir(".zshrc")), llb.WithCustomName("[internal] setting prompt zsh config")).Root() - } else if g.Shell == shellFish { + case shellFish: run = run.Run( llb.Shlexf(`bash -c 'echo "starship init fish | source" >> %s'`, fileutil.EnvdHomeDir(".config/fish/config.fish")), llb.WithCustomName("[internal] setting prompt fish config")).Root() diff --git a/pkg/progress/progressui/display.go b/pkg/progress/progressui/display.go index 8f0b044da..baa1073e8 100644 --- a/pkg/progress/progressui/display.go +++ b/pkg/progress/progressui/display.go @@ -632,7 +632,7 @@ func (t *trace) displayInfo() (d displayInfo) { } var jobs []*job j := &job{ - name: strings.Replace(v.Name, "\t", " ", -1), + name: strings.ReplaceAll(v.Name, "\t", " "), vertex: v, isCompleted: true, } From 30284ff3d7d81e0c5fd628590dde28d04537ced9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 May 2025 11:44:22 +0800 Subject: [PATCH 348/355] chore(deps): bump pypa/cibuildwheel from 2.23.2 to 2.23.3 in the all-actions group (#2018) chore(deps): bump pypa/cibuildwheel in the all-actions group Bumps the all-actions group with 1 update: [pypa/cibuildwheel](https://github.com/pypa/cibuildwheel). Updates `pypa/cibuildwheel` from 2.23.2 to 2.23.3 - [Release notes](https://github.com/pypa/cibuildwheel/releases) - [Changelog](https://github.com/pypa/cibuildwheel/blob/main/docs/changelog.md) - [Commits](https://github.com/pypa/cibuildwheel/compare/v2.23.2...v2.23.3) --- updated-dependencies: - dependency-name: pypa/cibuildwheel dependency-version: 2.23.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 65fe02c0e..c24f19945 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -69,7 +69,7 @@ jobs: with: python-version: '3.11' - name: Build wheels - uses: pypa/cibuildwheel@v2.23.2 + uses: pypa/cibuildwheel@v2.23.3 env: CIBW_ARCHS_MACOS: arm64, x86_64 CIBW_ARCHS_LINUX: auto64 From 2af2a92464fc5d6ec72a81b5863dfd214d8fddbe Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Thu, 1 May 2025 15:14:25 +0800 Subject: [PATCH 349/355] chore: bump deps (#2020) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 132 +++++++++++++------------- go.sum | 288 +++++++++++++++++++++++++++++---------------------------- 2 files changed, 214 insertions(+), 206 deletions(-) diff --git a/go.mod b/go.mod index 3585e2e38..cdd58146b 100644 --- a/go.mod +++ b/go.mod @@ -1,31 +1,31 @@ module github.com/tensorchord/envd -go 1.23.0 +go 1.24 -toolchain go1.23.4 +toolchain go1.24.2 require ( github.com/Pallinder/go-randomdata v1.2.0 github.com/bcicen/ctop v0.7.7 - github.com/charmbracelet/bubbletea v1.3.4 - github.com/charmbracelet/lipgloss v1.0.0 + github.com/charmbracelet/bubbletea v1.3.5 + github.com/charmbracelet/lipgloss v1.1.0 github.com/cockroachdb/errors v1.11.3 github.com/containerd/console v1.0.4 github.com/containerd/log v0.1.0 - github.com/containers/image/v5 v5.34.1 + github.com/containers/image/v5 v5.35.0 github.com/creack/pty v1.1.24 - github.com/docker/cli v28.0.1+incompatible - github.com/docker/docker v28.0.1+incompatible + github.com/docker/cli v28.1.1+incompatible + github.com/docker/docker v28.1.1+incompatible github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 github.com/gliderlabs/ssh v0.3.8 - github.com/go-git/go-git/v5 v5.14.0 + github.com/go-git/go-git/v5 v5.16.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.6.0 github.com/hashicorp/go-getter v1.7.8 github.com/mattn/go-isatty v0.0.20 - github.com/moby/buildkit v0.20.1 + github.com/moby/buildkit v0.21.1 github.com/moby/term v0.5.2 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v0.0.5 @@ -34,56 +34,58 @@ require ( github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.1 github.com/pkg/errors v0.9.1 - github.com/pkg/sftp v1.13.7 + github.com/pkg/sftp v1.13.9 github.com/schollz/progressbar/v3 v3.18.0 github.com/segmentio/analytics-go/v3 v3.3.0 github.com/sirupsen/logrus v1.9.3 - github.com/spf13/viper v1.19.0 + github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 - github.com/syncthing/syncthing v1.29.2 + github.com/syncthing/syncthing v1.29.5 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab github.com/urfave/cli/v2 v2.27.6 - go.starlark.net v0.0.0-20250225190231-0d3f41d403af - golang.org/x/crypto v0.36.0 - golang.org/x/sync v0.12.0 - golang.org/x/term v0.30.0 + go.starlark.net v0.0.0-20250417143717-f57e51f710eb + golang.org/x/crypto v0.37.0 + golang.org/x/sync v0.13.0 + golang.org/x/term v0.31.0 golang.org/x/time v0.11.0 ) require ( - cel.dev/expr v0.22.0 // indirect - cloud.google.com/go v0.118.3 // indirect - cloud.google.com/go/auth v0.15.0 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cel.dev/expr v0.23.1 // indirect + cloud.google.com/go v0.121.0 // indirect + cloud.google.com/go/auth v0.16.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.6.0 // indirect - cloud.google.com/go/iam v1.4.1 // indirect - cloud.google.com/go/monitoring v1.24.0 // indirect - cloud.google.com/go/storage v1.50.0 // indirect + cloud.google.com/go/iam v1.5.2 // indirect + cloud.google.com/go/monitoring v1.24.2 // indirect + cloud.google.com/go/storage v1.52.0 // indirect dario.cat/mergo v1.0.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/BurntSushi/toml v1.4.0 // indirect + github.com/BurntSushi/toml v1.5.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.1.6 // indirect + github.com/ProtonMail/go-crypto v1.2.0 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect - github.com/aws/aws-sdk-go v1.55.6 // indirect + github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/charmbracelet/x/ansi v0.8.0 // indirect + github.com/charmbracelet/colorprofile v0.3.1 // indirect + github.com/charmbracelet/x/ansi v0.9.2 // indirect + github.com/charmbracelet/x/cellbuf v0.0.13 // indirect github.com/charmbracelet/x/term v0.2.1 // indirect - github.com/cloudflare/circl v1.6.0 // indirect - github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cloudflare/circl v1.6.1 // indirect + github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect github.com/cockroachdb/redact v1.1.6 // indirect github.com/containerd/containerd/api v1.8.0 // indirect - github.com/containerd/containerd/v2 v2.0.4 // indirect + github.com/containerd/containerd/v2 v2.0.5 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -92,27 +94,29 @@ require ( github.com/containerd/typeurl/v2 v2.2.3 // indirect github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 // indirect github.com/containers/ocicrypt v1.2.1 // indirect - github.com/containers/storage v1.57.2 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect + github.com/containers/storage v1.58.0 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect github.com/cyphar/filepath-securejoin v0.4.1 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker-credential-helpers v0.9.2 // indirect + github.com/docker/docker-credential-helpers v0.9.3 // indirect github.com/ebitengine/purego v0.8.2 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect github.com/felixge/httpsnoop v1.0.4 // indirect - github.com/fsnotify/fsnotify v1.8.0 // indirect - github.com/getsentry/sentry-go v0.31.1 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/getsentry/sentry-go v0.32.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect + github.com/go-jose/go-jose/v4 v4.1.0 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect @@ -122,7 +126,7 @@ require ( github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.5 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/greatroar/blobloom v0.8.0 // indirect @@ -133,7 +137,6 @@ require ( github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.7.0 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/in-toto/in-toto-golang v0.9.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect @@ -143,8 +146,7 @@ require ( github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d // indirect - github.com/magiconair/properties v1.8.9 // indirect + github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 // indirect @@ -152,14 +154,14 @@ require ( github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect + github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/sys/capability v0.4.0 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/sys/signal v0.7.1 // indirect - github.com/moby/sys/user v0.3.0 // indirect + github.com/moby/sys/user v0.4.0 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/termenv v0.16.0 // indirect @@ -167,43 +169,45 @@ require ( github.com/nsf/termbox-go v1.1.1 // indirect github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect github.com/opencontainers/runtime-spec v1.2.1 // indirect - github.com/pelletier/go-toml/v2 v2.2.3 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pierrec/lz4/v4 v4.1.22 // indirect github.com/pjbgf/sha1cd v0.3.2 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect - github.com/prometheus/client_golang v1.21.1 // indirect - github.com/prometheus/client_model v0.6.1 // indirect - github.com/prometheus/common v0.62.0 // indirect - github.com/prometheus/procfs v0.15.1 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_model v0.6.2 // indirect + github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/sagikazarmark/locafero v0.7.0 // indirect - github.com/sagikazarmark/slog-shim v0.1.0 // indirect + github.com/sagikazarmark/locafero v0.9.0 // indirect github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect github.com/segmentio/backo-go v1.1.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect - github.com/shirou/gopsutil/v4 v4.25.2 // indirect + github.com/shirou/gopsutil/v4 v4.25.4 // indirect github.com/skeema/knownhosts v1.3.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/afero v1.12.0 // indirect + github.com/spf13/afero v1.14.0 // indirect github.com/spf13/cast v1.7.1 // indirect github.com/spf13/pflag v1.0.6 // indirect + github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thejerf/suture/v4 v4.0.6 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect github.com/tklauser/numcpus v0.10.0 // indirect - github.com/tonistiigi/fsutil v0.0.0-20250227023350-13604323a291 // indirect + github.com/tonistiigi/fsutil v0.0.0-20250417144416-3f76f8130144 // indirect github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 // indirect github.com/ulikunitz/xz v0.5.12 // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect + github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect @@ -215,21 +219,19 @@ require ( go.opentelemetry.io/otel/sdk v1.35.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.5.0 // indirect + go.opentelemetry.io/proto/otlp v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect - golang.org/x/net v0.37.0 // indirect - golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sys v0.31.0 // indirect - golang.org/x/text v0.23.0 // indirect - golang.org/x/tools v0.31.0 // indirect - google.golang.org/api v0.224.0 // indirect - google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb // indirect - google.golang.org/grpc v1.71.0 // indirect - google.golang.org/protobuf v1.36.5 // indirect - gopkg.in/ini.v1 v1.67.0 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/oauth2 v0.29.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/tools v0.32.0 // indirect + google.golang.org/api v0.231.0 // indirect + google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect + google.golang.org/grpc v1.72.0 // indirect + google.golang.org/protobuf v1.36.6 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 0033e4d8c..2d5c73ada 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,6 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -cel.dev/expr v0.22.0 h1:+hFFhLPmquBImfs1BiN2PZmkr5ASse2ZOuaxIs9e4R8= -cel.dev/expr v0.22.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg= +cel.dev/expr v0.23.1/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -39,8 +39,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.118.3 h1:jsypSnrE/w4mJysioGdMBg4MiW/hHx/sArFpaBWHdME= -cloud.google.com/go v0.118.3/go.mod h1:Lhs3YLnBlwJ4KA6nuObNMZ/fCbOQBPuWKPoE0Wa/9Vc= +cloud.google.com/go v0.121.0 h1:pgfwva8nGw7vivjZiRfrmglGWiCJBP+0OmDpenG/Fwg= +cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= @@ -102,10 +102,10 @@ cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVo cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/auth v0.15.0 h1:Ly0u4aA5vG/fsSsxu98qCQBemXtAtJf+95z9HK+cxps= -cloud.google.com/go/auth v0.15.0/go.mod h1:WJDGqZ1o9E9wKIL+IwStfyn/+s59zl4Bi+1KQNVXLZ8= -cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= -cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/auth v0.16.1 h1:XrXauHMd30LhQYVRHLGvJiYeczweKQXZxsTbV9TiguU= +cloud.google.com/go/auth v0.16.1/go.mod h1:1howDHJ5IETh/LwYs3ZxvlkXF48aSqqJUM+5o02dNOI= +cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= +cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= @@ -320,8 +320,8 @@ cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGE cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= -cloud.google.com/go/iam v1.4.1 h1:cFC25Nv+u5BkTR/BT1tXdoF2daiVbZ1RLx2eqfQ9RMM= -cloud.google.com/go/iam v1.4.1/go.mod h1:2vUEJpUG3Q9p2UdsyksaKpDzlwOrnMzS30isdReIcLM= +cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= +cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= @@ -356,8 +356,8 @@ cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhX cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/longrunning v0.6.4 h1:3tyw9rO3E2XVXzSApn1gyEEnH2K9SynNQjMlBi3uHLg= -cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs= +cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= +cloud.google.com/go/longrunning v0.6.7/go.mod h1:EAFV3IZAKmM56TyiE6VAP3VoTzhZzySwI/YI1s/nRsY= cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= @@ -381,8 +381,8 @@ cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhI cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= -cloud.google.com/go/monitoring v1.24.0 h1:csSKiCJ+WVRgNkRzzz3BPoGjFhjPY23ZTcaenToJxMM= -cloud.google.com/go/monitoring v1.24.0/go.mod h1:Bd1PRK5bmQBQNnuGwHBfUamAV1ys9049oEPHnn4pcsc= +cloud.google.com/go/monitoring v1.24.2 h1:5OTsoJ1dXYIiMiuL+sYscLc9BumrL3CarVLL7dd7lHM= +cloud.google.com/go/monitoring v1.24.2/go.mod h1:x7yzPWcgDRnPEv3sI+jJGBkwl5qINf+6qY4eq0I9B4U= cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= @@ -546,8 +546,8 @@ cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeL cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.50.0 h1:3TbVkzTooBvnZsk7WaAQfOsNrdoM8QHusXA1cpk6QJs= -cloud.google.com/go/storage v1.50.0/go.mod h1:l7XeiD//vx5lfqE3RavfmU9yvk5Pp0Zhcv482poyafY= +cloud.google.com/go/storage v1.52.0 h1:ROpzMW/IwipKtatA69ikxibdzQSiXJrY9f6IgBa9AlA= +cloud.google.com/go/storage v1.52.0/go.mod h1:4wrBAbAYUvYkbrf19ahGm4I5kDQhESSqN3CGEkMGvOY= cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= @@ -567,8 +567,8 @@ cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= -cloud.google.com/go/trace v1.11.3 h1:c+I4YFjxRQjvAhRmSsmjpASUKq88chOX854ied0K/pE= -cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8= +cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= +cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= @@ -628,8 +628,8 @@ github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0= -github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= +github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= @@ -651,8 +651,8 @@ github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEP github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= -github.com/ProtonMail/go-crypto v1.1.6 h1:ZcV+Ropw6Qn0AX9brlQLAUXfqLBc7Bl+f/DmNxpLfdw= -github.com/ProtonMail/go-crypto v1.1.6/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE= +github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs= +github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -669,8 +669,8 @@ github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk= -github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= +github.com/aws/aws-sdk-go v1.55.7 h1:UJrkFq7es5CShfBwlWAC8DA077vp8PyVbQd3lqLiztE= +github.com/aws/aws-sdk-go v1.55.7/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/bcicen/ctop v0.7.7 h1:huwTYTAHqqObovkg50v8qdTCLSDvPCBvS+k8EM0tP7E= @@ -693,12 +693,16 @@ github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/charmbracelet/bubbletea v1.3.4 h1:kCg7B+jSCFPLYRA52SDZjr51kG/fMUEoPoZrkaDHyoI= -github.com/charmbracelet/bubbletea v1.3.4/go.mod h1:dtcUCyCGEX3g9tosuYiut3MXgY/Jsv9nKVdibKKRRXo= -github.com/charmbracelet/lipgloss v1.0.0 h1:O7VkGDvqEdGi93X+DeqsQ7PKHDgtQfF8j8/O2qFMQNg= -github.com/charmbracelet/lipgloss v1.0.0/go.mod h1:U5fy9Z+C38obMs+T+tJqst9VGzlOYGj4ri9reL3qUlo= -github.com/charmbracelet/x/ansi v0.8.0 h1:9GTq3xq9caJW8ZrBTe0LIe2fvfLR/bYXKTx2llXn7xE= -github.com/charmbracelet/x/ansi v0.8.0/go.mod h1:wdYl/ONOLHLIVmQaxbIYEC/cRKOQyjTkowiI4blgS9Q= +github.com/charmbracelet/bubbletea v1.3.5 h1:JAMNLTbqMOhSwoELIr0qyP4VidFq72/6E9j7HHmRKQc= +github.com/charmbracelet/bubbletea v1.3.5/go.mod h1:TkCnmH+aBd4LrXhXcqrKiYwRs7qyQx5rBgH5fVY3v54= +github.com/charmbracelet/colorprofile v0.3.1 h1:k8dTHMd7fgw4bnFd7jXTLZrSU/CQrKnL3m+AxCzDz40= +github.com/charmbracelet/colorprofile v0.3.1/go.mod h1:/GkGusxNs8VB/RSOh3fu0TJmQ4ICMMPApIIVn0KszZ0= +github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY= +github.com/charmbracelet/lipgloss v1.1.0/go.mod h1:/6Q8FR2o+kj8rz4Dq0zQc3vYf7X+B0binUUBwA0aL30= +github.com/charmbracelet/x/ansi v0.9.2 h1:92AGsQmNTRMzuzHEYfCdjQeUzTrgE1vfO5/7fEVoXdY= +github.com/charmbracelet/x/ansi v0.9.2/go.mod h1:3RQDQ6lDnROptfpWuUVIUG64bD2g2BgntdxH0Ya5TeE= +github.com/charmbracelet/x/cellbuf v0.0.13 h1:/KBBKHuVRbq1lYx5BzEHBAFBP8VcQzJejZ/IA3iR28k= +github.com/charmbracelet/x/cellbuf v0.0.13/go.mod h1:xe0nKWGd3eJgtqZRaN9RjMtK7xUYchjzPr7q6kcvCCs= github.com/charmbracelet/x/term v0.2.1 h1:AQeHeLZ1OqSXhrAWpYUtZyX1T3zVxfpZuEQMIQaGIAQ= github.com/charmbracelet/x/term v0.2.1/go.mod h1:oQ4enTYFV7QN4m0i9mzHrViD7TQKvNEEkHUMCmsxdUg= github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= @@ -711,8 +715,8 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudflare/circl v1.6.0 h1:cr5JKic4HI+LkINy2lg3W2jF8sHCVTBncJr5gIIq7qk= -github.com/cloudflare/circl v1.6.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= +github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0= +github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -726,8 +730,8 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= -github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= +github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= @@ -748,8 +752,8 @@ github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMX github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= -github.com/containerd/containerd/v2 v2.0.4 h1:+r7yJMwhTfMm3CDyiBjMBQO8a9CTBxL2Bg/JtqtIwB8= -github.com/containerd/containerd/v2 v2.0.4/go.mod h1:5j9QUUaV/cy9ZeAx4S+8n9ffpf+iYnEj4jiExgcbuLY= +github.com/containerd/containerd/v2 v2.0.5 h1:2vg/TjUXnaohAxiHnthQg8K06L9I4gdYEMcOLiMc8BQ= +github.com/containerd/containerd/v2 v2.0.5/go.mod h1:Qqo0UN43i2fX1FLkrSTCg6zcHNfjN7gEnx3NPRZI+N0= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= @@ -779,20 +783,20 @@ github.com/containerd/ttrpc v1.2.7/go.mod h1:YCXHsb32f+Sq5/72xHubdiJRQY9inL4a4ZQ github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl/v2 v2.2.3 h1:yNA/94zxWdvYACdYO8zofhrTVuQY73fFU1y++dYSw40= github.com/containerd/typeurl/v2 v2.2.3/go.mod h1:95ljDnPfD3bAbDJRugOiShd/DlAAsxGtUBhJxIn7SCk= -github.com/containers/image/v5 v5.34.1 h1:/m2bkFnuedTyNkzma8s7cFLjeefPIb4trjyafWhIlwM= -github.com/containers/image/v5 v5.34.1/go.mod h1:/WnvUSEfdqC/ahMRd4YJDBLrpYWkGl018rB77iB3FDo= +github.com/containers/image/v5 v5.35.0 h1:T1OeyWp3GjObt47bchwD9cqiaAm/u4O4R9hIWdrdrP8= +github.com/containers/image/v5 v5.35.0/go.mod h1:8vTsgb+1gKcBL7cnjyNOInhJQfTUQjJoO2WWkKDoebM= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01 h1:Qzk5C6cYglewc+UyGf6lc8Mj2UaPTHy/iF2De0/77CA= github.com/containers/libtrust v0.0.0-20230121012942-c1716e8a8d01/go.mod h1:9rfv8iPl1ZP7aqh9YA68wnZv2NUDbXdcdPHVz0pFbPY= github.com/containers/ocicrypt v1.2.1 h1:0qIOTT9DoYwcKmxSt8QJt+VzMY18onl9jUXsxpVhSmM= github.com/containers/ocicrypt v1.2.1/go.mod h1:aD0AAqfMp0MtwqWgHM1bUwe1anx0VazI108CRrSKINQ= -github.com/containers/storage v1.57.2 h1:2roCtTyE9pzIaBDHibK72DTnYkPmwWaq5uXxZdaWK4U= -github.com/containers/storage v1.57.2/go.mod h1:i/Hb4lu7YgFr9G0K6BMjqW0BLJO1sFsnWQwj2UoWCUM= +github.com/containers/storage v1.58.0 h1:Q7SyyCCjqgT3wYNgRNIL8o/wUS92heIj2/cc8Sewvcc= +github.com/containers/storage v1.58.0/go.mod h1:w7Jl6oG+OpeLGLzlLyOZPkmUso40kjpzgrHUk5tyBlo= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= -github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= +github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.24 h1:bJrF4RRfyJnbTJqzRLHzcGaZK1NeM5kTC9jGgovnR1s= @@ -808,15 +812,15 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.0.1+incompatible h1:g0h5NQNda3/CxIsaZfH4Tyf6vpxFth7PYl3hgCPOKzs= -github.com/docker/cli v28.0.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.1.1+incompatible h1:eyUemzeI45DY7eDPuwUcmDyDj1pM98oD5MdSpiItp8k= +github.com/docker/cli v28.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v28.0.1+incompatible h1:FCHjSRdXhNRFjlHMTv4jUNlIBbTeRjrWfeFuJp7jpo0= -github.com/docker/docker v28.0.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.9.2 h1:50JF7ADQiHdAVBRtg/vy883Y4U5+5GmPOBNtUU+X+6A= -github.com/docker/docker-credential-helpers v0.9.2/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= +github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= +github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= +github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= @@ -869,11 +873,11 @@ github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7z github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= -github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= -github.com/getsentry/sentry-go v0.31.1 h1:ELVc0h7gwyhnXHDouXkhqTFSO5oslsRDk0++eyE0KJ4= -github.com/getsentry/sentry-go v0.31.1/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= +github.com/getsentry/sentry-go v0.32.0 h1:YKs+//QmwE3DcYtfKRH8/KyOOF/I6Qnx7qYGNHCGmCY= +github.com/getsentry/sentry-go v0.32.0/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= @@ -893,11 +897,13 @@ github.com/go-git/go-billy/v5 v5.6.2 h1:6Q86EsPXMa7c3YZ3aLAQsMA0VlWmy43r6FHqa/UN github.com/go-git/go-billy/v5 v5.6.2/go.mod h1:rcFC2rAsp/erv7CMz9GczHcuD0D32fWzH+MJAU+jaUU= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4= github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= -github.com/go-git/go-git/v5 v5.14.0 h1:/MD3lCrGjCen5WfEAzKg00MJJffKhC8gzS80ycmCi60= -github.com/go-git/go-git/v5 v5.14.0/go.mod h1:Z5Xhoia5PcWA3NF8vRLURn9E5FRhSl7dGj9ItW3Wk5k= +github.com/go-git/go-git/v5 v5.16.0 h1:k3kuOEpkc0DeY7xlL6NaaNg39xdgQbtH5mwCafHO9AQ= +github.com/go-git/go-git/v5 v5.16.0/go.mod h1:4Ge4alE/5gPs30F2H1esi2gPd69R0C39lolkucHBOp8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.1.0 h1:cYSYxd3pw5zd2FSXk2vGdn9igQU2PS8MuxrCOCl0FdY= +github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5tuc6iAd+sw= github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= @@ -913,6 +919,8 @@ github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhO github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -1026,8 +1034,8 @@ github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.3.5 h1:VgzTY2jogw3xt39CusEnFJWm7rlsq5yL5q9XdLOuP5g= -github.com/googleapis/enterprise-certificate-proxy v0.3.5/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= +github.com/googleapis/enterprise-certificate-proxy v0.3.6 h1:GW/XbdyBFQ8Qe+YAmFU9uHLo7OnF5tL52HFAgMmyrf4= +github.com/googleapis/enterprise-certificate-proxy v0.3.6/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= @@ -1071,8 +1079,6 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= @@ -1123,13 +1129,11 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d h1:fjMbDVUGsMQiVZnSQsmouYJvMdwsGiDipOZoN66v844= -github.com/lufia/plan9stats v0.0.0-20250303091104-876f3ea5145d/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= +github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 h1:PpXWgLPs+Fqr325bN2FD2ISlRRztXibcX6e8f5FR5Dc= +github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= -github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= -github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= @@ -1157,16 +1161,16 @@ github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.20.1 h1:sT0ZXhhNo5rVbMcYfgttma3TdUHfO5JjFA0UAL8p9fY= -github.com/moby/buildkit v0.20.1/go.mod h1:Rq9nB/fJImdk6QeM0niKtOHJqwKeYMrK847hTTDVuA4= +github.com/moby/buildkit v0.21.1 h1:wTjVLfirh7skZt9piaIlNo8WdiPjza1CDl2EArDV9bA= +github.com/moby/buildkit v0.21.1/go.mod h1:mBq0D44uCyz2PdX8T/qym5LBbkBO3GGv0wqgX9ABYYw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= +github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= github.com/moby/sys/capability v0.4.0 h1:4D4mI6KlNtWMCM1Z/K0i7RV1FkX+DBDHKVJpCndZoHk= github.com/moby/sys/capability v0.4.0/go.mod h1:4g9IK291rVkms3LKCDOoYlnV8xKwoDTpIrNEE35Wq0I= github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= @@ -1178,8 +1182,8 @@ github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7z github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= github.com/moby/sys/signal v0.7.1 h1:PrQxdvxcGijdo6UXXo/lU/TvHUWyPhj7UOpSo8tuvk0= github.com/moby/sys/signal v0.7.1/go.mod h1:Se1VGehYokAkrSQwL4tDzHvETwUZlnY7S5XtQ50mQp8= -github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= -github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= github.com/moby/term v0.0.0-20201110203204-bea5bbe245bf/go.mod h1:FBS0z0QWA44HXygs7VXDUOGoN/1TV3RuWkLO04am3wc= @@ -1242,12 +1246,12 @@ github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.m github.com/opencontainers/runtime-spec v1.2.1 h1:S4k4ryNgEpxW1dzyqffOmhI1BHYcjzU8lpJfSlR0xww= github.com/opencontainers/runtime-spec v1.2.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= -github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/opencontainers/selinux v1.12.0 h1:6n5JV4Cf+4y0KNXW48TLj5DwfXpvWlxXplUkdTrmPb8= +github.com/opencontainers/selinux v1.12.0/go.mod h1:BTPX+bjVbWGXw7ZZWUbdENt8w0htPSrlgOOysQaU62U= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= -github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= @@ -1265,8 +1269,8 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= -github.com/pkg/sftp v1.13.7 h1:uv+I3nNJvlKZIQGSr8JVQLNHFU9YhhNpvC14Y6KgmSM= -github.com/pkg/sftp v1.13.7/go.mod h1:KMKI0t3T6hfA+lTR/ssZdunHo+uwq7ghoN09/FSu3DY= +github.com/pkg/sftp v1.13.9 h1:4NGkvGudBL7GteO3m6qnaQ4pC0Kvf0onSVc9gR3EWBw= +github.com/pkg/sftp v1.13.9/go.mod h1:OBN7bVXdstkFFN/gdnHPUb5TE8eb8G1Rp9wCItqjkkA= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1274,18 +1278,18 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= -github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk= -github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= -github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= -github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= -github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= -github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= +github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= +github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= -github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= +github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= @@ -1301,10 +1305,8 @@ github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= -github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= -github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= -github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= -github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sagikazarmark/locafero v0.9.0 h1:GbgQGNtTrEmddYDSAH9QLRyfAHY12md+8YFTqyMTC9k= +github.com/sagikazarmark/locafero v0.9.0/go.mod h1:UBUyz37V+EdMS3hDF3QWIiVr/2dPrx49OMO0Bn0hJqk= github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA= github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= @@ -1318,8 +1320,8 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= -github.com/shirou/gopsutil/v4 v4.25.2 h1:NMscG3l2CqtWFS86kj3vP7soOczqrQYIEhO/pMvvQkk= -github.com/shirou/gopsutil/v4 v4.25.2/go.mod h1:34gBYJzyqCDT11b6bMHP0XCvWeU3J61XRT7a2EmCRTA= +github.com/shirou/gopsutil/v4 v4.25.4 h1:cdtFO363VEOOFrUCjZRh4XVJkb548lyF0q0uTeMqYPw= +github.com/shirou/gopsutil/v4 v4.25.4/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -1338,8 +1340,8 @@ github.com/spdx/tools-golang v0.5.3/go.mod h1:/ETOahiAo96Ob0/RAIBmFZw6XN0yTnyr/u github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= -github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= -github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= +github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -1347,8 +1349,10 @@ github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bd github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= -github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -1370,8 +1374,8 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc h1:xc3UfSFlH/X5hRw3h21RF6WXnRUYKmGRx06FEaVxfkM= github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= -github.com/syncthing/syncthing v1.29.2 h1:TZJSOhx6cPV1jPKK+RkTcRLLKtXDvKRJy4YZzIL+K0o= -github.com/syncthing/syncthing v1.29.2/go.mod h1:VYkBOHuUqNzQrld9D1c75/wNsoe5qaJK/760RE1TzU8= +github.com/syncthing/syncthing v1.29.5 h1:ZVXor/hWVZ8FNLPHkOoNCsR6Rt++qlXKVNDhM87ZJLY= +github.com/syncthing/syncthing v1.29.5/go.mod h1:4uWzdBhnOb1g4lR0XNfAq0aDdYns4wr9BeR1RDbnzEk= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -1383,8 +1387,8 @@ github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8O github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= -github.com/tonistiigi/fsutil v0.0.0-20250227023350-13604323a291 h1:1WRvmYdTkwjgFIlnOwo6Y15BMwQBUQT423y1zHad4Eo= -github.com/tonistiigi/fsutil v0.0.0-20250227023350-13604323a291/go.mod h1:Dl/9oEjK7IqnjAm21Okx/XIxUCFJzvh+XdVHUlBwXTw= +github.com/tonistiigi/fsutil v0.0.0-20250417144416-3f76f8130144 h1:k9tdF32oJYwtjzMx+D26M6eYiCaAPdJ7tyN7tF1oU5Q= +github.com/tonistiigi/fsutil v0.0.0-20250417144416-3f76f8130144/go.mod h1:BKdcez7BiVtBvIcef90ZPc6ebqIWr4JWD7+EvLm6J98= github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0 h1:2f304B10LaZdB8kkVEaoXvAMVan2tl9AiK4G0odjQtE= github.com/tonistiigi/go-csvvalue v0.0.0-20240814133006-030d3b2625d0/go.mod h1:278M4p8WsNh3n4a1eqiFcV2FGk7wE5fwUpUom9mK9lE= github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= @@ -1398,12 +1402,14 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.27.6 h1:VdRdS98FNhKZ8/Az8B7MTyGQmpIr36O1EHybx/LaZ4g= github.com/urfave/cli/v2 v2.27.6/go.mod h1:3Sevf16NykTbInEnD0yKkjDAeZDS0A6bzhBH5hrMvTQ= -github.com/vbatts/tar-split v0.11.7 h1:ixZ93pO/GmvaZw4Vq9OwmfZK/kc2zKdPfu0B+gYqs3U= -github.com/vbatts/tar-split v0.11.7/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA= +github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo= +github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavMF/ppJZNG9ZpyihvCd0w101no= +github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1416,6 +1422,8 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -1442,8 +1450,8 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0f go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= @@ -1455,10 +1463,10 @@ go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4= -go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4= -go.starlark.net v0.0.0-20250225190231-0d3f41d403af h1:gdHSl5pZSdC+7qdBKx0n0x4Y2b4UNjuKnKH8Lfwft3o= -go.starlark.net v0.0.0-20250225190231-0d3f41d403af/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= +go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= +go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= +go.starlark.net v0.0.0-20250417143717-f57e51f710eb h1:zOg9DxxrorEmgGUr5UPdCEwKqiqG0MlZciuCuA3XiDE= +go.starlark.net v0.0.0-20250417143717-f57e51f710eb/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -1474,12 +1482,12 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34= -golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1495,8 +1503,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= -golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= +golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1611,8 +1619,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c= -golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1642,8 +1650,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= -golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98= +golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1664,8 +1672,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw= -golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1768,12 +1776,12 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik= -golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1786,12 +1794,12 @@ golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= -golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y= -golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1812,8 +1820,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY= -golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1890,8 +1898,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= -golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= +golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU= +golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1965,8 +1973,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.224.0 h1:Ir4UPtDsNiwIOHdExr3fAj4xZ42QjK7uQte3lORLJwU= -google.golang.org/api v0.224.0/go.mod h1:3V39my2xAGkodXy0vEqcEtkqgw2GtrFL5WuBZlCTCOQ= +google.golang.org/api v0.231.0 h1:LbUD5FUl0C4qwia2bjXhCMH65yz1MLPzA/0OYEsYY7Q= +google.golang.org/api v0.231.0/go.mod h1:H52180fPI/QQlUc0F4xWfGZILdv09GCWKt2bcsn164A= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2106,12 +2114,12 @@ google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb h1:ITgPrl429bc6+2ZraNSzMDk3I95nmQln2fuPstKwFDE= -google.golang.org/genproto v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:sAo5UzpjUwgFBCzupwhcLcxHVDK7vG5IqI30YnwX2eE= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb h1:p31xT4yrYrSM/G4Sn2+TNUkVhFCbG9y8itM2S6Th950= -google.golang.org/genproto/googleapis/api v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:jbe3Bkdp+Dh2IrslsFCklNhweNTBgSYanP1UXhJDhKg= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb h1:TLPQVbx1GJ8VKZxz52VAxl1EBgKXXbTiU9Fc5fZeLn4= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250303144028-a0af3efb3deb/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I= +google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34 h1:oklGWmm0ZiCw4efmdYZo5MF9t6nRvGzM5+0klSjOmGM= +google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34/go.mod h1:hiH/EqX5GBdTyIpkqMqDGUHDiBniln8b4FCw+NzPxQY= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= +google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -2154,8 +2162,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.71.0 h1:kF77BGdPTQ4/JZWMlb9VpJ5pa25aqvVqogsxNHHdeBg= -google.golang.org/grpc v1.71.0/go.mod h1:H0GRtasmQOh9LkFoCPDu3ZrwUtD1YGE+b2vYBYd/8Ec= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= @@ -2175,8 +2183,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= -google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -2185,8 +2193,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= -gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= @@ -2205,8 +2211,8 @@ gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= From f246649b0ec79cd319998d29d24c76c8acc10b5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Jun 2025 17:34:26 +0800 Subject: [PATCH 350/355] chore(deps): bump golangci/golangci-lint-action from 7 to 8 in the all-actions group (#2022) chore(deps): bump golangci/golangci-lint-action in the all-actions group Bumps the all-actions group with 1 update: [golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action). Updates `golangci/golangci-lint-action` from 7 to 8 - [Release notes](https://github.com/golangci/golangci-lint-action/releases) - [Commits](https://github.com/golangci/golangci-lint-action/compare/v7...v8) --- updated-dependencies: - dependency-name: golangci/golangci-lint-action dependency-version: '8' dependency-type: direct:production update-type: version-update:semver-major dependency-group: all-actions ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/CI.yml | 2 +- .github/workflows/nightly.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 160e67571..9a928e96a 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -50,7 +50,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v7 + uses: golangci/golangci-lint-action@v8 with: args: --timeout=5m version: latest diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index fb779fcb9..58de2eaf5 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -25,7 +25,7 @@ jobs: make addlicense && git add pkg cmd && git diff --cached --exit-code || (echo 'Please run "make addlicense" to verify govet' && exit 1); - name: golangci-lint - uses: golangci/golangci-lint-action@v7 + uses: golangci/golangci-lint-action@v8 with: args: --timeout=5m version: latest From b96459498b2131d80446f46822a2a67eeed938ed Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Mon, 2 Jun 2025 14:44:10 +0800 Subject: [PATCH 351/355] refact: bump tablewriter to v1, fix the breaking change (#2024) * refact: bump tablewriter to v1, fix the breaking change Signed-off-by: Keming <kemingyang@tensorchord.ai> * fix lint Signed-off-by: Keming <kemingyang@tensorchord.ai> --------- Signed-off-by: Keming <kemingyang@tensorchord.ai> --- go.mod | 108 +++++++------- go.sum | 230 +++++++++++++++-------------- pkg/app/context_ls.go | 2 +- pkg/app/env_describe.go | 7 +- pkg/app/env_ls.go | 2 +- pkg/app/formatter/table/context.go | 27 ++-- pkg/app/formatter/table/env.go | 111 ++++++++------ pkg/app/formatter/table/image.go | 27 ++-- pkg/app/image.go | 2 +- pkg/app/image_describe.go | 2 +- pkg/app/image_prune.go | 30 ++-- pkg/app/image_prune_test.go | 5 +- pkg/driver/docker/docker.go | 9 +- pkg/envd/docker.go | 5 +- 14 files changed, 291 insertions(+), 276 deletions(-) diff --git a/go.mod b/go.mod index cdd58146b..ce1979c65 100644 --- a/go.mod +++ b/go.mod @@ -9,13 +9,13 @@ require ( github.com/bcicen/ctop v0.7.7 github.com/charmbracelet/bubbletea v1.3.5 github.com/charmbracelet/lipgloss v1.1.0 - github.com/cockroachdb/errors v1.11.3 - github.com/containerd/console v1.0.4 + github.com/cockroachdb/errors v1.12.0 + github.com/containerd/console v1.0.5 github.com/containerd/log v0.1.0 github.com/containers/image/v5 v5.35.0 github.com/creack/pty v1.1.24 - github.com/docker/cli v28.1.1+incompatible - github.com/docker/docker v28.1.1+incompatible + github.com/docker/cli v28.2.2+incompatible + github.com/docker/docker v28.2.2+incompatible github.com/docker/go-connections v0.5.0 github.com/docker/go-units v0.5.0 github.com/gizak/termui/v3 v3.1.0 @@ -25,10 +25,10 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-getter v1.7.8 github.com/mattn/go-isatty v0.0.20 - github.com/moby/buildkit v0.21.1 + github.com/moby/buildkit v0.22.0 github.com/moby/term v0.5.2 github.com/morikuni/aec v1.0.0 - github.com/olekukonko/tablewriter v0.0.5 + github.com/olekukonko/tablewriter v1.0.7 github.com/onsi/ginkgo/v2 v2.22.2 github.com/onsi/gomega v1.36.2 github.com/opencontainers/go-digest v1.0.0 @@ -40,36 +40,35 @@ require ( github.com/sirupsen/logrus v1.9.3 github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 - github.com/syncthing/syncthing v1.29.5 + github.com/syncthing/syncthing v1.29.6 github.com/tensorchord/envd-server v0.0.27 github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea github.com/tonistiigi/vt100 v0.0.0-20240514184818-90bafcd6abab github.com/urfave/cli/v2 v2.27.6 - go.starlark.net v0.0.0-20250417143717-f57e51f710eb - golang.org/x/crypto v0.37.0 - golang.org/x/sync v0.13.0 - golang.org/x/term v0.31.0 + go.starlark.net v0.0.0-20250530210732-c81913c6f2e2 + golang.org/x/crypto v0.38.0 + golang.org/x/sync v0.14.0 + golang.org/x/term v0.32.0 golang.org/x/time v0.11.0 ) require ( - cel.dev/expr v0.23.1 // indirect - cloud.google.com/go v0.121.0 // indirect + cel.dev/expr v0.24.0 // indirect + cloud.google.com/go v0.121.2 // indirect cloud.google.com/go/auth v0.16.1 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect - cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/compute/metadata v0.7.0 // indirect cloud.google.com/go/iam v1.5.2 // indirect cloud.google.com/go/monitoring v1.24.2 // indirect - cloud.google.com/go/storage v1.52.0 // indirect - dario.cat/mergo v1.0.1 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 // indirect + cloud.google.com/go/storage v1.55.0 // indirect + dario.cat/mergo v1.0.2 // indirect github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/BurntSushi/toml v1.5.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.28.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.52.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.52.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/ProtonMail/go-crypto v1.2.0 // indirect + github.com/ProtonMail/go-crypto v1.3.0 // indirect github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be // indirect github.com/aws/aws-sdk-go v1.55.7 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect @@ -81,11 +80,11 @@ require ( github.com/charmbracelet/x/cellbuf v0.0.13 // indirect github.com/charmbracelet/x/term v0.2.1 // indirect github.com/cloudflare/circl v1.6.1 // indirect - github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f // indirect + github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 // indirect github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect github.com/cockroachdb/redact v1.1.6 // indirect - github.com/containerd/containerd/api v1.8.0 // indirect - github.com/containerd/containerd/v2 v2.0.5 // indirect + github.com/containerd/containerd/api v1.9.0 // indirect + github.com/containerd/containerd/v2 v2.1.1 // indirect github.com/containerd/continuity v0.4.5 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect @@ -101,18 +100,19 @@ require ( github.com/distribution/reference v0.6.0 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker-credential-helpers v0.9.3 // indirect - github.com/ebitengine/purego v0.8.2 // indirect + github.com/ebitengine/purego v0.8.4 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect + github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/getsentry/sentry-go v0.32.0 // indirect + github.com/getsentry/sentry-go v0.33.0 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.6.2 // indirect github.com/go-jose/go-jose/v4 v4.1.0 // indirect - github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect @@ -127,7 +127,7 @@ require ( github.com/google/s2a-go v0.1.9 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect - github.com/googleapis/gax-go/v2 v2.14.1 // indirect + github.com/googleapis/gax-go/v2 v2.14.2 // indirect github.com/gorilla/mux v1.8.1 // indirect github.com/greatroar/blobloom v0.8.0 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.3 // indirect @@ -147,6 +147,7 @@ require ( github.com/kr/text v0.2.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/miscreant/miscreant.go v0.0.0-20200214223636-26d376326b75 // indirect @@ -157,7 +158,6 @@ require ( github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/locker v1.0.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect - github.com/moby/sys/atomicwriter v0.1.0 // indirect github.com/moby/sys/capability v0.4.0 // indirect github.com/moby/sys/mountinfo v0.7.2 // indirect github.com/moby/sys/signal v0.7.1 // indirect @@ -167,6 +167,8 @@ require ( github.com/muesli/termenv v0.16.0 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nsf/termbox-go v1.1.1 // indirect + github.com/olekukonko/errors v1.1.0 // indirect + github.com/olekukonko/ll v0.0.8 // indirect github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 // indirect github.com/opencontainers/runtime-spec v1.2.1 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect @@ -177,7 +179,7 @@ require ( github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.22.0 // indirect github.com/prometheus/client_model v0.6.2 // indirect - github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/common v0.64.0 // indirect github.com/prometheus/procfs v0.16.1 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect @@ -187,15 +189,15 @@ require ( github.com/segmentio/backo-go v1.1.0 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/shibumi/go-pathspec v1.3.0 // indirect - github.com/shirou/gopsutil/v4 v4.25.4 // indirect + github.com/shirou/gopsutil/v4 v4.25.5 // indirect github.com/skeema/knownhosts v1.3.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.14.0 // indirect - github.com/spf13/cast v1.7.1 // indirect + github.com/spf13/cast v1.8.0 // indirect github.com/spf13/pflag v1.0.6 // indirect github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc // indirect + github.com/syncthing/notify v0.0.0-20250528144937-c7027d4f7465 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect github.com/thejerf/suture/v4 v4.0.6 // indirect github.com/tklauser/go-sysconf v0.3.15 // indirect @@ -209,28 +211,28 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect github.com/zeebo/errs v1.4.0 // indirect go.opentelemetry.io/auto/sdk v1.1.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.35.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 // indirect - go.opentelemetry.io/otel v1.35.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 // indirect - go.opentelemetry.io/otel/metric v1.35.0 // indirect - go.opentelemetry.io/otel/sdk v1.35.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect - go.opentelemetry.io/otel/trace v1.35.0 // indirect - go.opentelemetry.io/proto/otlp v1.6.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.36.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 // indirect + go.opentelemetry.io/otel v1.36.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 // indirect + go.opentelemetry.io/otel/metric v1.36.0 // indirect + go.opentelemetry.io/otel/sdk v1.36.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect + go.opentelemetry.io/otel/trace v1.36.0 // indirect + go.opentelemetry.io/proto/otlp v1.7.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/net v0.39.0 // indirect - golang.org/x/oauth2 v0.29.0 // indirect - golang.org/x/sys v0.32.0 // indirect - golang.org/x/text v0.24.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/oauth2 v0.30.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect golang.org/x/tools v0.32.0 // indirect - google.golang.org/api v0.231.0 // indirect - google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 // indirect - google.golang.org/grpc v1.72.0 // indirect + google.golang.org/api v0.235.0 // indirect + google.golang.org/genproto v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect + google.golang.org/grpc v1.72.2 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 2d5c73ada..96a9309ad 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,6 @@ bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -cel.dev/expr v0.23.1 h1:K4KOtPCJQjVggkARsjG9RWXP6O4R73aHeJMa/dmCQQg= -cel.dev/expr v0.23.1/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= +cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= +cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= @@ -39,8 +39,8 @@ cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRY cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= -cloud.google.com/go v0.121.0 h1:pgfwva8nGw7vivjZiRfrmglGWiCJBP+0OmDpenG/Fwg= -cloud.google.com/go v0.121.0/go.mod h1:rS7Kytwheu/y9buoDmu5EIpMMCI4Mb8ND4aeN4Vwj7Q= +cloud.google.com/go v0.121.2 h1:v2qQpN6Dx9x2NmwrqlesOt3Ys4ol5/lFZ6Mg1B7OJCg= +cloud.google.com/go v0.121.2/go.mod h1:nRFlrHq39MNVWu+zESP2PosMWA0ryJw8KUBZ2iZpxbw= cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= @@ -185,8 +185,8 @@ cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZ cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= -cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= -cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/compute/metadata v0.7.0 h1:PBWF+iiAerVNe8UCHxdOt6eHLVc3ydFeOCw78U8ytSU= +cloud.google.com/go/compute/metadata v0.7.0/go.mod h1:j5MvL9PprKL39t166CoB1uVHfQMs4tFQZZcKwksXUjo= cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= @@ -546,8 +546,8 @@ cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeL cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.52.0 h1:ROpzMW/IwipKtatA69ikxibdzQSiXJrY9f6IgBa9AlA= -cloud.google.com/go/storage v1.52.0/go.mod h1:4wrBAbAYUvYkbrf19ahGm4I5kDQhESSqN3CGEkMGvOY= +cloud.google.com/go/storage v1.55.0 h1:NESjdAToN9u1tmhVqhXCaCwYBuvEhZLLv0gBr+2znf0= +cloud.google.com/go/storage v1.55.0/go.mod h1:ztSmTTwzsdXe5syLVS0YsbFxXuvEmEyZj7v7zChEmuY= cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= @@ -615,15 +615,13 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= -dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= -dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= +dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= +dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2 h1:dIScnXFlF784X79oi7MzVT6GWqr/W1uUt0pB5CsDs9M= -github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20231105174938-2b5cbb29f3e2/go.mod h1:gCLVsLfv1egrcZu+GoJATN5ts75F2s62ih/457eWzOw= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= @@ -631,14 +629,14 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0 h1:ErKg/3iS1AKcTkf3yixlZ54f9U1rljCkQyEXWUnIUxc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.27.0/go.mod h1:yAZHSGnqScoU556rBOVkwLze6WP5N+U11RHuWaGVxwY= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0/go.mod h1:BnBReJLvVYx2CS/UHOgVz2BXKXD9wsQPxZug20nZhd0= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0 h1:OqVGm6Ei3x5+yZmSJG1Mh2NwHvpVmZ08CB5qJhT9Nuk= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.51.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0 h1:6/0iUd0xrnX7qt+mLNRwg5c0PGv8wpE8K90ryANQwMI= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.51.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.28.0 h1:VaFXBL0NJpiFBtw4aVJpKHeKULVTcHpD+/G0ibZkcBw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.28.0/go.mod h1:JXkPazkEc/dZTHzOlzv2vT1DlpWSTbSLmu/1KY6Ly0I= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.52.0 h1:QFgWzcdmJlgEAwJz/zePYVJQxfoJGRtgIqZfIUFg5oQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.52.0/go.mod h1:ayYHuYU7iNcNtEs1K9k6D/Bju7u1VEHMQm5qQ1n3GtM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.52.0 h1:0l8ynskVvq1dvIn5vJbFMf/a/3TqFpRmCMrruFbzlvk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.52.0/go.mod h1:f/ad5NuHnYz8AOZGuR0cY+l36oSCstdxD73YlIchr6I= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.52.0 h1:wbMd4eG/fOhsCa6+IP8uEDvWF5vl7rNoUWmP5f72Tbs= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.52.0/go.mod h1:gdIm9TxRk5soClCwuB0FtdXsbqtw0aqPwBEurK9tPkw= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= github.com/Microsoft/go-winio v0.4.15-0.20200908182639-5b44b70ab3ab/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= @@ -646,13 +644,13 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Microsoft/hcsshim v0.8.10/go.mod h1:g5uw8EV2mAlzqe94tfNBNdr89fnbD/n3HV0OhsddkmM= -github.com/Microsoft/hcsshim v0.12.9 h1:2zJy5KA+l0loz1HzEGqyNnjd3fyZA31ZBCGKacp6lLg= -github.com/Microsoft/hcsshim v0.12.9/go.mod h1:fJ0gkFAna6ukt0bLdKB8djt4XIJhF/vEPuoIWYVvZ8Y= +github.com/Microsoft/hcsshim v0.13.0 h1:/BcXOiS6Qi7N9XqUcv27vkIuVOkBEcWstd2pMlWSeaA= +github.com/Microsoft/hcsshim v0.13.0/go.mod h1:9KWJ/8DgU+QzYGupX4tzMhRQE8h6w90lH6HAaclpEok= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= -github.com/ProtonMail/go-crypto v1.2.0 h1:+PhXXn4SPGd+qk76TlEePBfOfivE0zkWFenhGhFLzWs= -github.com/ProtonMail/go-crypto v1.2.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= +github.com/ProtonMail/go-crypto v1.3.0 h1:ILq8+Sf5If5DCpHQp4PbZdS1J7HDFRXz/+xKBiRGFrw= +github.com/ProtonMail/go-crypto v1.3.0/go.mod h1:9whxjD8Rbs29b4XWbB8irEcE8KHMqaR2e7GWU1R+/PE= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= @@ -730,10 +728,10 @@ github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f h1:C5bqEmzEPLsHm9Mv73lSE9e9bKV23aB1vxOsmZrkl3k= -github.com/cncf/xds/go v0.0.0-20250326154945-ae57f3c0d45f/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= -github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= -github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443 h1:aQ3y1lwWyqYPiWZThqv1aFbZMiM9vblcSArJRf2Irls= +github.com/cncf/xds/go v0.0.0-20250501225837-2ac532fd4443/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cockroachdb/errors v1.12.0 h1:d7oCs6vuIMUQRVbi6jWWWEJZahLCfJpnJSVobd1/sUo= +github.com/cockroachdb/errors v1.12.0/go.mod h1:SvzfYNNBshAVbZ8wzNc/UPK3w1vf0dKDUP41ucAIf7g= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILMqgNeV5jiqR4j+sTuvQNHdf2chuKj1M5k= github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= @@ -746,14 +744,14 @@ github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJ github.com/containerd/cgroups/v3 v3.0.5/go.mod h1:SA5DLYnXO8pTGYiAHXz94qvLQTKfVM5GEVisn4jpins= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= -github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/containerd/console v1.0.5 h1:R0ymNeydRqH2DmakFNdmjR2k0t7UPuiOV/N/27/qqsc= +github.com/containerd/console v1.0.5/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd/api v1.8.0 h1:hVTNJKR8fMc/2Tiw60ZRijntNMd1U+JVMyTRdsD2bS0= -github.com/containerd/containerd/api v1.8.0/go.mod h1:dFv4lt6S20wTu/hMcP4350RL87qPWLVa/OHOwmmdnYc= -github.com/containerd/containerd/v2 v2.0.5 h1:2vg/TjUXnaohAxiHnthQg8K06L9I4gdYEMcOLiMc8BQ= -github.com/containerd/containerd/v2 v2.0.5/go.mod h1:Qqo0UN43i2fX1FLkrSTCg6zcHNfjN7gEnx3NPRZI+N0= +github.com/containerd/containerd/api v1.9.0 h1:HZ/licowTRazus+wt9fM6r/9BQO7S0vD5lMcWspGIg0= +github.com/containerd/containerd/api v1.9.0/go.mod h1:GhghKFmTR3hNtyznBoQ0EMWr9ju5AqHjcZPsSpTKutI= +github.com/containerd/containerd/v2 v2.1.1 h1:znnkm7Ajz8lg8BcIPMhc/9yjBRN3B+OkNKqKisKfwwM= +github.com/containerd/containerd/v2 v2.1.1/go.mod h1:zIfkQj4RIodclYQkX7GSSswSwgP8d/XxDOtOAoSDIGU= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200928162600-f2cc35102c2a/go.mod h1:W0qIOTD7mp2He++YVq+kgfXezRYqzP1uDuMVH1bITDY= github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= @@ -812,13 +810,13 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/cli v28.1.1+incompatible h1:eyUemzeI45DY7eDPuwUcmDyDj1pM98oD5MdSpiItp8k= -github.com/docker/cli v28.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v28.2.2+incompatible h1:qzx5BNUDFqlvyq4AHzdNB7gSyVTmU4cgsyN9SdInc1A= +github.com/docker/cli v28.2.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v20.10.0-beta1.0.20201113105859-b6bfff2a628f+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I= -github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v28.2.2+incompatible h1:CjwRSksz8Yo4+RmQ339Dp/D2tGO5JxwYeqtMOEe0LDw= +github.com/docker/docker v28.2.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= @@ -831,8 +829,8 @@ github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4 github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= -github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw= +github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= @@ -863,6 +861,8 @@ github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2T github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4= github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= +github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= @@ -876,8 +876,8 @@ github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmV github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fsouza/go-dockerclient v1.7.0/go.mod h1:Ny0LfP7OOsYu9nAi4339E4Ifor6nGBFO2M8lnd2nR+c= -github.com/getsentry/sentry-go v0.32.0 h1:YKs+//QmwE3DcYtfKRH8/KyOOF/I6Qnx7qYGNHCGmCY= -github.com/getsentry/sentry-go v0.32.0/go.mod h1:CYNcMMz73YigoHljQRG+qPF+eMq8gG72XcGN/p71BAY= +github.com/getsentry/sentry-go v0.33.0 h1:YWyDii0KGVov3xOaamOnF0mjOrqSjBqwv48UEzn7QFg= +github.com/getsentry/sentry-go v0.33.0/go.mod h1:C55omcY9ChRQIUcVcGcs+Zdy4ZpQGvNJ7JYHIoSWOtE= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gizak/termui v2.3.0+incompatible/go.mod h1:PkJoWUt/zacQKysNfQtcw1RW+eK2SxkieVBtl+4ovLA= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= @@ -907,8 +907,8 @@ github.com/go-jose/go-jose/v4 v4.1.0/go.mod h1:GG/vqmYm3Von2nYiB2vGTXzdoNKE5tix5 github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= -github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -1047,8 +1047,8 @@ github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqE github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= -github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= +github.com/googleapis/gax-go/v2 v2.14.2 h1:eBLnkZ9635krYIPD+ag1USrOAI0Nr0QYF3+/3GqO0k0= +github.com/googleapis/gax-go/v2 v2.14.2/go.mod h1:ON64QhlJkhVtSqp4v1uaK92VyZ2gmvDQsweuyLV+8+w= github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= @@ -1135,6 +1135,8 @@ github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuz github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -1161,8 +1163,8 @@ github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/moby/buildkit v0.21.1 h1:wTjVLfirh7skZt9piaIlNo8WdiPjza1CDl2EArDV9bA= -github.com/moby/buildkit v0.21.1/go.mod h1:mBq0D44uCyz2PdX8T/qym5LBbkBO3GGv0wqgX9ABYYw= +github.com/moby/buildkit v0.22.0 h1:aWN06w1YGSVN1XfeZbj2ZbgY+zi5xDAjEFI8Cy9fTjA= +github.com/moby/buildkit v0.22.0/go.mod h1:j4pP5hxiTWcz7xuTK2cyxQislHl/N2WWHzOy43DlLJw= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= @@ -1213,8 +1215,12 @@ github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= -github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= -github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/olekukonko/errors v1.1.0 h1:RNuGIh15QdDenh+hNvKrJkmxxjV4hcS50Db478Ou5sM= +github.com/olekukonko/errors v1.1.0/go.mod h1:ppzxA5jBKcO1vIpCXQ9ZqgDh8iwODz6OXIGKU8r5m4Y= +github.com/olekukonko/ll v0.0.8 h1:sbGZ1Fx4QxJXEqL/6IG8GEFnYojUSQ45dJVwN2FH2fc= +github.com/olekukonko/ll v0.0.8/go.mod h1:En+sEW0JNETl26+K8eZ6/W4UQ7CYSrrgg/EdIYT2H8g= +github.com/olekukonko/tablewriter v1.0.7 h1:HCC2e3MM+2g72M81ZcJU11uciw6z/p82aEnm4/ySDGw= +github.com/olekukonko/tablewriter v1.0.7/go.mod h1:H428M+HzoUXC6JU2Abj9IT9ooRmdq9CxuDmKMtrOCMs= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= @@ -1285,8 +1291,8 @@ github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6T github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= -github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= -github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/common v0.64.0 h1:pdZeA+g617P7oGv1CzdTzyeShxAGrTBsolKNOLQPGO4= +github.com/prometheus/common v0.64.0/go.mod h1:0gZns+BLRQ3V6NdaerOhMbwwRbNh9hkGINtQAsP5GS8= github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzMyRg= github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is= @@ -1320,8 +1326,8 @@ github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= -github.com/shirou/gopsutil/v4 v4.25.4 h1:cdtFO363VEOOFrUCjZRh4XVJkb548lyF0q0uTeMqYPw= -github.com/shirou/gopsutil/v4 v4.25.4/go.mod h1:xbuxyoZj+UsgnZrENu3lQivsngRR5BdjbJwf2fv4szA= +github.com/shirou/gopsutil/v4 v4.25.5 h1:rtd9piuSMGeU8g1RMXjZs9y9luK5BwtnG7dZaQUJAsc= +github.com/shirou/gopsutil/v4 v4.25.5/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= @@ -1342,8 +1348,8 @@ github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.14.0 h1:9tH6MapGnn/j0eb0yIXiLjERO8RB6xIVZRDCX7PtqWA= github.com/spf13/afero v1.14.0/go.mod h1:acJQ8t0ohCGuMN3O+Pv0V0hgMxNYDlvdk+VTfyZmbYo= -github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= -github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cast v1.8.0 h1:gEN9K4b8Xws4EX0+a0reLmhq8moKn7ntRlQYgjPeCDk= +github.com/spf13/cast v1.8.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -1372,10 +1378,10 @@ github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOf github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc h1:xc3UfSFlH/X5hRw3h21RF6WXnRUYKmGRx06FEaVxfkM= -github.com/syncthing/notify v0.0.0-20250207082249-f0fa8f99c2bc/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= -github.com/syncthing/syncthing v1.29.5 h1:ZVXor/hWVZ8FNLPHkOoNCsR6Rt++qlXKVNDhM87ZJLY= -github.com/syncthing/syncthing v1.29.5/go.mod h1:4uWzdBhnOb1g4lR0XNfAq0aDdYns4wr9BeR1RDbnzEk= +github.com/syncthing/notify v0.0.0-20250528144937-c7027d4f7465 h1:yhxdTGmFkAM2TFA65c3NgGwpnIkUM8oVqPX2e9S7IVg= +github.com/syncthing/notify v0.0.0-20250528144937-c7027d4f7465/go.mod h1:J0q59IWjLtpRIJulohwqEZvjzwOfTEPp8SVhDJl+y0Y= +github.com/syncthing/syncthing v1.29.6 h1:cfryI6OEc6xlckuy/5iCPsSxYj+m7NQuO9pqwhBMp9c= +github.com/syncthing/syncthing v1.29.6/go.mod h1:Rg08aElF6QSPQELa+zgBeWijvvjGXDGIhif2Y6Mxv2o= github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= @@ -1436,37 +1442,37 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0 h1:bGvFt68+KTiAKFlacHW6AhA56GF2rS0bdD3aJYEnmzA= -go.opentelemetry.io/contrib/detectors/gcp v1.35.0/go.mod h1:qGWP8/+ILwMRIUf9uIVLloR1uo5ZYAslM4O6OqUi1DA= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0 h1:0tY123n7CdWMem7MOVdKOt0YfshufLCwfE5Bob+hQuM= -go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.60.0/go.mod h1:CosX/aS4eHnG9D7nESYpV753l4j9q5j3SL/PUYd2lR8= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ= -go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ= -go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0 h1:lUsI2TYsQw2r1IASwoROaCnjdj2cvC2+Jbxvk6nHnWU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.31.0/go.mod h1:2HpZxxQurfGxJlJDblybejHB6RX6pmExPNe517hREw4= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0 h1:PB3Zrjs1sG1GBX51SXyTSoOTqcDglmsk7nT6tkKPb/k= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.35.0/go.mod h1:U2R3XyVPzn0WX7wOIypPuptulsMcPDPs/oiSVOMVnHY= -go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M= -go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE= -go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY= -go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg= -go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o= -go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w= -go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs= -go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= +go.opentelemetry.io/contrib/detectors/gcp v1.36.0/go.mod h1:IbBN8uAIIx734PTonTPxAxnjc2pQTxWNkwfstZ+6H2k= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0 h1:q4XOmH/0opmeuJtPsbFNivyl7bCt7yRBbeEm2sC/XtQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.61.0/go.mod h1:snMWehoOh2wsEwnvvwtDyFCxVeDAODenXHtn5vzrKjo= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0 h1:lREC4C0ilyP4WibDhQ7Gg2ygAQFP8oR07Fst/5cafwI= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.61.0/go.mod h1:HfvuU0kW9HewH14VCOLImqKvUgONodURG7Alj/IrnGI= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q= +go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg= +go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 h1:dNzwXjZKpMpE2JhmO+9HsPl42NIXFIFSUSSs0fiqra0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0/go.mod h1:90PoxvaEB5n6AOdZvi+yWJQoE95U8Dhhw2bSyRqnTD0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0 h1:xJ2qHD0C1BeYVTLLR9sX12+Qb95kfeD/byKj6Ky1pXg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.35.0/go.mod h1:u5BF1xyjstDowA1R5QAO9JHzqK+ublenEW/dyqTjBVk= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= +go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE= +go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs= +go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs= +go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY= +go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis= +go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4= +go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w= +go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v1.6.0 h1:jQjP+AQyTf+Fe7OKj/MfkDrmK4MNVtw2NpXsf9fefDI= -go.opentelemetry.io/proto/otlp v1.6.0/go.mod h1:cicgGehlFuNdgZkcALOCh3VE6K/u2tAjzlRhDwmVpZc= -go.starlark.net v0.0.0-20250417143717-f57e51f710eb h1:zOg9DxxrorEmgGUr5UPdCEwKqiqG0MlZciuCuA3XiDE= -go.starlark.net v0.0.0-20250417143717-f57e51f710eb/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= +go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz09os= +go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= +go.starlark.net v0.0.0-20250530210732-c81913c6f2e2 h1:N2WAN7QuNpXJWkx/i4LqZ5UP0v+mVwMpPORRJ2INJZc= +go.starlark.net v0.0.0-20250530210732-c81913c6f2e2/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= @@ -1486,8 +1492,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= -golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1619,8 +1625,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= -golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1650,8 +1656,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.29.0 h1:WdYw2tdTK1S8olAzWHdgeqfy+Mtm9XNhv/xJsY65d98= -golang.org/x/oauth2 v0.29.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= +golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1672,8 +1678,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= -golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ= +golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1780,8 +1786,8 @@ golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= -golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/term v0.0.0-20201113234701-d7a72108b828/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1798,8 +1804,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= -golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= +golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1820,8 +1826,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= -golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -1973,8 +1979,8 @@ google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/ google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.231.0 h1:LbUD5FUl0C4qwia2bjXhCMH65yz1MLPzA/0OYEsYY7Q= -google.golang.org/api v0.231.0/go.mod h1:H52180fPI/QQlUc0F4xWfGZILdv09GCWKt2bcsn164A= +google.golang.org/api v0.235.0 h1:C3MkpQSRxS1Jy6AkzTGKKrpSCOd2WOGrezZ+icKSkKo= +google.golang.org/api v0.235.0/go.mod h1:QpeJkemzkFKe5VCE/PMv7GsUfn9ZF+u+q1Q7w6ckxTg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2114,12 +2120,12 @@ google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOl google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34 h1:oklGWmm0ZiCw4efmdYZo5MF9t6nRvGzM5+0klSjOmGM= -google.golang.org/genproto v0.0.0-20250428153025-10db94c68c34/go.mod h1:hiH/EqX5GBdTyIpkqMqDGUHDiBniln8b4FCw+NzPxQY= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34 h1:0PeQib/pH3nB/5pEmFeVQJotzGohV0dq4Vcp09H5yhE= -google.golang.org/genproto/googleapis/api v0.0.0-20250428153025-10db94c68c34/go.mod h1:0awUlEkap+Pb1UMeJwJQQAdJQrt3moU7J2moTy69irI= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34 h1:h6p3mQqrmT1XkHVTfzLdNz1u7IhINeZkz67/xTbOuWs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250428153025-10db94c68c34/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/genproto v0.0.0-20250528174236-200df99c418a h1:KXuwdBmgjb4T3l4ZzXhP6HxxFKXD9FcK5/8qfJI4WwU= +google.golang.org/genproto v0.0.0-20250528174236-200df99c418a/go.mod h1:Nlk93rrS2X7rV8hiC2gh2A/AJspZhElz9Oh2KGsjLEY= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a h1:SGktgSolFCo75dnHJF2yMvnns6jCmHFJ0vE4Vn2JKvQ= +google.golang.org/genproto/googleapis/api v0.0.0-20250528174236-200df99c418a/go.mod h1:a77HrdMjoeKbnd2jmgcWdaS++ZLZAEq3orIOAEIKiVw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -2162,8 +2168,8 @@ google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5v google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= -google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= -google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc v1.72.2 h1:TdbGzwb82ty4OusHWepvFWGLgIbNo1/SUynEN0ssqv8= +google.golang.org/grpc v1.72.2/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= diff --git a/pkg/app/context_ls.go b/pkg/app/context_ls.go index 49d85767e..c4602fd69 100644 --- a/pkg/app/context_ls.go +++ b/pkg/app/context_ls.go @@ -43,7 +43,7 @@ func contextList(clicontext *cli.Context) error { format := clicontext.String("format") switch format { case "table": - table.RenderContext(os.Stdout, contexts) + return table.RenderContext(os.Stdout, contexts) case "json": return json.PrintContext(contexts) } diff --git a/pkg/app/env_describe.go b/pkg/app/env_describe.go index ca113bd5e..768630c4f 100644 --- a/pkg/app/env_describe.go +++ b/pkg/app/env_describe.go @@ -78,8 +78,11 @@ func getEnvironmentDescriptions(clicontext *cli.Context) error { format := clicontext.String("format") switch format { case "table": - table.RenderDependencies(os.Stdout, dep) - table.RenderPortBindings(os.Stdout, ports) + err = table.RenderDependencies(os.Stdout, dep) + if err != nil { + return err + } + return table.RenderPortBindings(os.Stdout, ports) case "json": return json.PrintEnvironmentDescriptions(dep, ports) } diff --git a/pkg/app/env_ls.go b/pkg/app/env_ls.go index 547678e9e..7683cb52d 100644 --- a/pkg/app/env_ls.go +++ b/pkg/app/env_ls.go @@ -59,7 +59,7 @@ func getEnvironment(clicontext *cli.Context) error { format := clicontext.String("format") switch format { case "table": - table.RenderEnvironments(os.Stdout, envs) + return table.RenderEnvironments(os.Stdout, envs) case "json": return json.PrintEnvironments(envs) } diff --git a/pkg/app/formatter/table/context.go b/pkg/app/formatter/table/context.go index 4da6a4c23..cb24da660 100644 --- a/pkg/app/formatter/table/context.go +++ b/pkg/app/formatter/table/context.go @@ -18,27 +18,15 @@ import ( "fmt" "io" - "github.com/olekukonko/tablewriter" + "github.com/cockroachdb/errors" "github.com/tensorchord/envd/pkg/app/formatter" "github.com/tensorchord/envd/pkg/types" ) -func RenderContext(w io.Writer, contexts types.EnvdContext) { - table := tablewriter.NewWriter(w) - table.SetHeader([]string{"context", "builder", "builder addr", "runner", "runner addr"}) - - table.SetAutoWrapText(false) - table.SetAutoFormatHeaders(true) - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.SetAlignment(tablewriter.ALIGN_LEFT) - table.SetCenterSeparator("") - table.SetColumnSeparator("") - table.SetRowSeparator("") - table.SetHeaderLine(false) - table.SetBorder(false) - table.SetTablePadding("\t") // pad with tabs - table.SetNoWhiteSpace(true) +func RenderContext(w io.Writer, contexts types.EnvdContext) error { + table := CreateTable(w) + table.Header([]string{"context", "builder", "builder addr", "runner", "runner addr"}) for _, p := range contexts.Contexts { envRow := make([]string, 5) @@ -53,7 +41,10 @@ func RenderContext(w io.Writer, contexts types.EnvdContext) { if p.RunnerAddress != nil { envRow[4] = formatter.StringOrNone(*p.RunnerAddress) } - table.Append(envRow) + err := table.Append(envRow) + if err != nil { + return errors.Wrapf(err, "failed to append row for context %s", p.Name) + } } - table.Render() + return errors.Wrap(table.Render(), "failed to render context table") } diff --git a/pkg/app/formatter/table/env.go b/pkg/app/formatter/table/env.go index 39fc9276f..b1ffc18c8 100644 --- a/pkg/app/formatter/table/env.go +++ b/pkg/app/formatter/table/env.go @@ -19,31 +19,22 @@ import ( "io" "strconv" + "github.com/cockroachdb/errors" "github.com/olekukonko/tablewriter" + "github.com/olekukonko/tablewriter/renderer" + "github.com/olekukonko/tablewriter/tw" "github.com/tensorchord/envd/pkg/app/formatter" "github.com/tensorchord/envd/pkg/types" ) -func RenderEnvironments(w io.Writer, envs []types.EnvdEnvironment) { - table := tablewriter.NewWriter(w) - table.SetHeader([]string{ +func RenderEnvironments(w io.Writer, envs []types.EnvdEnvironment) error { + table := CreateTable(w) + table.Header([]string{ "Name", "Endpoint", "SSH Target", "Image", "GPU", "CUDA", "CUDNN", "Status", }) - table.SetAutoWrapText(false) - table.SetAutoFormatHeaders(true) - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.SetAlignment(tablewriter.ALIGN_LEFT) - table.SetCenterSeparator("") - table.SetColumnSeparator("") - table.SetRowSeparator("") - table.SetHeaderLine(false) - table.SetBorder(false) - table.SetTablePadding("\t") // pad with tabs - table.SetNoWhiteSpace(true) - for _, env := range envs { envRow := make([]string, 9) envRow[0] = env.Name @@ -54,16 +45,20 @@ func RenderEnvironments(w io.Writer, envs []types.EnvdEnvironment) { envRow[5] = formatter.StringOrNone(env.CUDA) envRow[6] = formatter.StringOrNone(env.CUDNN) envRow[7] = env.Status.Phase - table.Append(envRow) + err := table.Append(envRow) + if err != nil { + return errors.Wrapf(err, "failed to append row for environment %s", env.Name) + } } - table.Render() + return errors.Wrap(table.Render(), "failed to render environment table") } -func RenderPortBindings(w io.Writer, ports []types.PortBinding) { +func RenderPortBindings(w io.Writer, ports []types.PortBinding) error { if ports == nil { - return + return nil } - table := createTable(w, []string{"Name", "Container Port", "Protocol", "Host IP", "Host Port"}) + table := CreateTable(w) + table.Header([]string{"Name", "Container Port", "Protocol", "Host IP", "Host Port"}) for _, port := range ports { row := make([]string, 5) row[0] = port.Name @@ -71,46 +66,76 @@ func RenderPortBindings(w io.Writer, ports []types.PortBinding) { row[2] = port.Protocol row[3] = port.HostIP row[4] = port.HostPort - table.Append(row) + err := table.Append(row) + if err != nil { + return errors.Wrapf(err, "failed to append row for port binding %s", port.Name) + } } - table.Render() + return errors.Wrap(table.Render(), "failed to render port bindings table") } -func RenderDependencies(w io.Writer, dep *types.Dependency) { +func RenderDependencies(w io.Writer, dep *types.Dependency) error { if dep == nil { - return + return nil } - table := createTable(w, []string{"Dependencies", "Type"}) + table := CreateTable(w) + table.Header([]string{"Dependencies", "Type"}) for _, p := range dep.PyPIPackages { envRow := make([]string, 2) envRow[0] = p envRow[1] = "Python" - table.Append(envRow) + err := table.Append(envRow) + if err != nil { + return errors.Wrapf(err, "failed to append row for Python package %s", p) + } } for _, p := range dep.APTPackages { envRow := make([]string, 2) envRow[0] = p envRow[1] = "APT" - table.Append(envRow) + err := table.Append(envRow) + if err != nil { + return errors.Wrapf(err, "failed to append row for APT package %s", p) + } } - table.Render() + return errors.Wrap(table.Render(), "failed to render dependencies table") } -func createTable(w io.Writer, headers []string) *tablewriter.Table { - table := tablewriter.NewWriter(w) - table.SetHeader(headers) - - table.SetAutoWrapText(false) - table.SetAutoFormatHeaders(true) - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.SetAlignment(tablewriter.ALIGN_LEFT) - table.SetCenterSeparator("") - table.SetColumnSeparator("") - table.SetRowSeparator("") - table.SetHeaderLine(false) - table.SetBorder(true) - table.SetTablePadding("\t") // pad with tabs - table.SetNoWhiteSpace(true) +func CreateTable(w io.Writer) *tablewriter.Table { + table := tablewriter.NewTable( + w, + tablewriter.WithRowAutoWrap(tw.WrapNone), + tablewriter.WithHeaderAutoFormat(tw.On), + tablewriter.WithRenderer(renderer.NewBlueprint( + tw.Rendition{ + Borders: tw.BorderNone, + Symbols: tw.NewSymbols(tw.StyleNone), + Settings: tw.Settings{ + Separators: tw.Separators{ + BetweenRows: tw.Off, + BetweenColumns: tw.Off, + }, + Lines: tw.Lines{ + ShowHeaderLine: tw.Off, + }, + }, + }, + )), + tablewriter.WithConfig( + tablewriter.Config{ + Header: tw.CellConfig{ + Alignment: tw.CellAlignment{ + Global: tw.AlignLeft, + }, + }, + Row: tw.CellConfig{ + Alignment: tw.CellAlignment{ + Global: tw.AlignLeft, + }, + }, + }, + ), + ) return table } diff --git a/pkg/app/formatter/table/image.go b/pkg/app/formatter/table/image.go index 2ab0ca7dd..e5cfc0568 100644 --- a/pkg/app/formatter/table/image.go +++ b/pkg/app/formatter/table/image.go @@ -18,29 +18,17 @@ import ( "io" "strconv" + "github.com/cockroachdb/errors" "github.com/docker/docker/pkg/stringid" "github.com/docker/go-units" - "github.com/olekukonko/tablewriter" "github.com/tensorchord/envd/pkg/app/formatter" "github.com/tensorchord/envd/pkg/types" ) -func RenderImages(w io.Writer, imgs []types.EnvdImage) { - table := tablewriter.NewWriter(w) - table.SetHeader([]string{"Name", "Context", "GPU", "CUDA", "CUDNN", "Image ID", "Created", "Size"}) - - table.SetAutoWrapText(false) - table.SetAutoFormatHeaders(true) - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.SetAlignment(tablewriter.ALIGN_LEFT) - table.SetCenterSeparator("") - table.SetColumnSeparator("") - table.SetRowSeparator("") - table.SetHeaderLine(false) - table.SetBorder(false) - table.SetTablePadding("\t") // pad with tabs - table.SetNoWhiteSpace(true) +func RenderImages(w io.Writer, imgs []types.EnvdImage) error { + table := CreateTable(w) + table.Header([]string{"Name", "Context", "GPU", "CUDA", "CUDNN", "Image ID", "Created", "Size"}) for _, img := range imgs { envRow := make([]string, 8) @@ -52,7 +40,10 @@ func RenderImages(w io.Writer, imgs []types.EnvdImage) { envRow[5] = stringid.TruncateID(img.Digest) envRow[6] = formatter.CreatedSinceString(img.Created) envRow[7] = units.HumanSizeWithPrecision(float64(img.Size), 3) - table.Append(envRow) + err := table.Append(envRow) + if err != nil { + return errors.Wrapf(err, "failed to append row for image %s", img.Name) + } } - table.Render() + return errors.Wrap(table.Render(), "failed to render image table") } diff --git a/pkg/app/image.go b/pkg/app/image.go index 63aa51d2e..67f5c9f41 100644 --- a/pkg/app/image.go +++ b/pkg/app/image.go @@ -70,7 +70,7 @@ func getImage(clicontext *cli.Context) error { format := clicontext.String("format") switch format { case "table": - table.RenderImages(os.Stdout, imgs) + return table.RenderImages(os.Stdout, imgs) case "json": return json.PrintImages(imgs) } diff --git a/pkg/app/image_describe.go b/pkg/app/image_describe.go index b4fc0beb5..3aef40e5b 100644 --- a/pkg/app/image_describe.go +++ b/pkg/app/image_describe.go @@ -66,7 +66,7 @@ func getImageDependency(clicontext *cli.Context) error { format := clicontext.String("format") switch format { case "table": - table.RenderDependencies(os.Stdout, dep) + return table.RenderDependencies(os.Stdout, dep) case "json": return json.PrintEnvironmentDescriptions(dep, []types.PortBinding{}) } diff --git a/pkg/app/image_prune.go b/pkg/app/image_prune.go index 4a00499ee..320cbe917 100644 --- a/pkg/app/image_prune.go +++ b/pkg/app/image_prune.go @@ -19,11 +19,12 @@ import ( "io" "os" + "github.com/cockroachdb/errors" dockerimage "github.com/docker/docker/api/types/image" "github.com/docker/go-units" - "github.com/olekukonko/tablewriter" "github.com/urfave/cli/v2" + "github.com/tensorchord/envd/pkg/app/formatter/table" "github.com/tensorchord/envd/pkg/app/telemetry" "github.com/tensorchord/envd/pkg/driver/docker" ) @@ -46,27 +47,15 @@ func pruneImages(clicontext *cli.Context) error { return err } if len(report.ImagesDeleted) > 0 { - renderPruneReport(os.Stdout, report) + return renderPruneReport(os.Stdout, report) } return nil } -func renderPruneReport(w io.Writer, report dockerimage.PruneReport) { - table := tablewriter.NewWriter(w) - table.SetHeader([]string{"Type", "Image"}) - - table.SetAutoWrapText(false) - table.SetAutoFormatHeaders(true) - table.SetHeaderAlignment(tablewriter.ALIGN_LEFT) - table.SetAlignment(tablewriter.ALIGN_LEFT) - table.SetCenterSeparator("") - table.SetColumnSeparator("") - table.SetRowSeparator("") - table.SetHeaderLine(false) - table.SetBorder(false) - table.SetTablePadding("\t") // pad with tabs - table.SetNoWhiteSpace(true) +func renderPruneReport(w io.Writer, report dockerimage.PruneReport) error { + table := table.CreateTable(w) + table.Header([]string{"Type", "Image"}) for _, img := range report.ImagesDeleted { envRow := make([]string, 2) @@ -77,8 +66,11 @@ func renderPruneReport(w io.Writer, report dockerimage.PruneReport) { envRow[0] = "Deleted" envRow[1] = img.Deleted } - table.Append(envRow) + err := table.Append(envRow) + if err != nil { + return errors.Wrapf(err, "failed to append row for image %s", img.Untagged) + } } - table.Render() fmt.Fprintln(w, "Total reclaimed space:", units.HumanSize(float64(report.SpaceReclaimed))) + return errors.Wrap(table.Render(), "failed to render prune report table") } diff --git a/pkg/app/image_prune_test.go b/pkg/app/image_prune_test.go index cef277cb2..d7499357b 100644 --- a/pkg/app/image_prune_test.go +++ b/pkg/app/image_prune_test.go @@ -34,5 +34,8 @@ func Test_renderPruneReport(t *testing.T) { }, SpaceReclaimed: 666666, } - renderPruneReport(os.Stdout, report) + err := renderPruneReport(os.Stdout, report) + if err != nil { + t.Errorf("renderPruneReport() error = %v", err) + } } diff --git a/pkg/driver/docker/docker.go b/pkg/driver/docker/docker.go index f6ce2afea..d24a103da 100644 --- a/pkg/driver/docker/docker.go +++ b/pkg/driver/docker/docker.go @@ -29,6 +29,7 @@ import ( "time" "github.com/cockroachdb/errors" + "github.com/containerd/errdefs" "github.com/containers/image/v5/docker/reference" "github.com/containers/image/v5/pkg/docker/config" "github.com/docker/docker/api/types/container" @@ -270,7 +271,7 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * logger.Debug("starting buildkitd") var buf bytes.Buffer if _, err := c.ImageInspect(ctx, tag, client.ImageInspectWithRawResponse(&buf)); err != nil { - if !client.IsErrNotFound(err) { + if !errdefs.IsNotFound(err) { return "", errors.Wrap(err, "failed to inspect image") } @@ -355,7 +356,7 @@ func (c dockerClient) StartBuildkitd(ctx context.Context, tag, name string, bc * func (c dockerClient) Exists(ctx context.Context, cname string) (bool, error) { _, err := c.ContainerInspect(ctx, cname) if err != nil { - if client.IsErrNotFound(err) { + if errdefs.IsNotFound(err) { return false, nil } return false, err @@ -366,7 +367,7 @@ func (c dockerClient) Exists(ctx context.Context, cname string) (bool, error) { func (c dockerClient) IsRunning(ctx context.Context, cname string) (bool, error) { container, err := c.ContainerInspect(ctx, cname) if err != nil { - if client.IsErrNotFound(err) { + if errdefs.IsNotFound(err) { return false, nil } return false, err @@ -377,7 +378,7 @@ func (c dockerClient) IsRunning(ctx context.Context, cname string) (bool, error) func (c dockerClient) GetStatus(ctx context.Context, cname string) (containerType.ContainerStatus, error) { container, err := c.ContainerInspect(ctx, cname) if err != nil { - if client.IsErrNotFound(err) { + if errdefs.IsNotFound(err) { return "", nil } return "", err diff --git a/pkg/envd/docker.go b/pkg/envd/docker.go index dcf377680..6742fe04b 100644 --- a/pkg/envd/docker.go +++ b/pkg/envd/docker.go @@ -25,6 +25,7 @@ import ( "time" "github.com/cockroachdb/errors" + "github.com/containerd/errdefs" "github.com/docker/cli/opts" "github.com/docker/docker/api/types/container" "github.com/docker/docker/api/types/filters" @@ -295,7 +296,7 @@ func (e dockerEngine) CleanEnvdIfExists(ctx context.Context, name string, force func (e dockerEngine) Exists(ctx context.Context, cname string) (bool, error) { _, err := e.ContainerInspect(ctx, cname) if err != nil { - if client.IsErrNotFound(err) { + if errdefs.IsNotFound(err) { return false, nil } return false, err @@ -306,7 +307,7 @@ func (e dockerEngine) Exists(ctx context.Context, cname string) (bool, error) { func (e dockerEngine) IsRunning(ctx context.Context, cname string) (bool, error) { container, err := e.ContainerInspect(ctx, cname) if err != nil { - if client.IsErrNotFound(err) { + if errdefs.IsNotFound(err) { return false, nil } return false, err From af96cb339e4a90e21debba7363e74963b2b8507a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 18:42:30 +0800 Subject: [PATCH 352/355] chore(deps): bump the all-dependencies group across 1 directory with 2 updates (#2025) Bumps the all-dependencies group with 1 update in the / directory: [github.com/onsi/ginkgo/v2](https://github.com/onsi/ginkgo). Updates `github.com/onsi/ginkgo/v2` from 2.22.2 to 2.23.4 - [Release notes](https://github.com/onsi/ginkgo/releases) - [Changelog](https://github.com/onsi/ginkgo/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/ginkgo/compare/v2.22.2...v2.23.4) Updates `github.com/onsi/gomega` from 1.36.2 to 1.36.3 - [Release notes](https://github.com/onsi/gomega/releases) - [Changelog](https://github.com/onsi/gomega/blob/master/CHANGELOG.md) - [Commits](https://github.com/onsi/gomega/compare/v1.36.2...v1.36.3) --- updated-dependencies: - dependency-name: github.com/onsi/ginkgo/v2 dependency-version: 2.23.4 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: all-dependencies - dependency-name: github.com/onsi/gomega dependency-version: 1.36.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 9 +++++---- go.sum | 16 ++++++++++------ 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index ce1979c65..d2c4d89c7 100644 --- a/go.mod +++ b/go.mod @@ -11,6 +11,7 @@ require ( github.com/charmbracelet/lipgloss v1.1.0 github.com/cockroachdb/errors v1.12.0 github.com/containerd/console v1.0.5 + github.com/containerd/errdefs v1.0.0 github.com/containerd/log v0.1.0 github.com/containers/image/v5 v5.35.0 github.com/creack/pty v1.1.24 @@ -29,8 +30,8 @@ require ( github.com/moby/term v0.5.2 github.com/morikuni/aec v1.0.0 github.com/olekukonko/tablewriter v1.0.7 - github.com/onsi/ginkgo/v2 v2.22.2 - github.com/onsi/gomega v1.36.2 + github.com/onsi/ginkgo/v2 v2.23.4 + github.com/onsi/gomega v1.36.3 github.com/opencontainers/go-digest v1.0.0 github.com/opencontainers/image-spec v1.1.1 github.com/pkg/errors v0.9.1 @@ -86,7 +87,6 @@ require ( github.com/containerd/containerd/api v1.9.0 // indirect github.com/containerd/containerd/v2 v2.1.1 // indirect github.com/containerd/continuity v0.4.5 // indirect - github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect github.com/containerd/platforms v1.0.0-rc.1 // indirect github.com/containerd/ttrpc v1.2.7 // indirect @@ -123,7 +123,7 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect + github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect @@ -222,6 +222,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.36.0 // indirect go.opentelemetry.io/otel/trace v1.36.0 // indirect go.opentelemetry.io/proto/otlp v1.7.0 // indirect + go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/net v0.40.0 // indirect golang.org/x/oauth2 v0.30.0 // indirect diff --git a/go.sum b/go.sum index 96a9309ad..77417ffa9 100644 --- a/go.sum +++ b/go.sum @@ -1018,8 +1018,8 @@ github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= @@ -1227,14 +1227,14 @@ github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vv github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.22.2 h1:/3X8Panh8/WwhU/3Ssa6rCKqPLuAkVY2I0RoyDLySlU= -github.com/onsi/ginkgo/v2 v2.22.2/go.mod h1:oeMosUL+8LtarXBHu/c0bx2D/K9zyQ6uX3cTyztHwsk= +github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= +github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= -github.com/onsi/gomega v1.36.2 h1:koNYke6TVk6ZmnyHrCXba/T/MoLBXFjeC1PtvYgw0A8= -github.com/onsi/gomega v1.36.2/go.mod h1:DdwyADRjrc825LhMEkD76cHR5+pUnjhUN8GlHlRPHzY= +github.com/onsi/gomega v1.36.3 h1:hID7cr8t3Wp26+cYnfcjR6HpJ00fdogN6dqZ1t6IylU= +github.com/onsi/gomega v1.36.3/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/op/go-logging v0.0.0-20160211212156-b2cb9fa56473/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= @@ -1284,6 +1284,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -1473,6 +1475,8 @@ go.opentelemetry.io/proto/otlp v1.7.0 h1:jX1VolD6nHuFzOYso2E73H85i92Mv8JQYk0K9vz go.opentelemetry.io/proto/otlp v1.7.0/go.mod h1:fSKjH6YJ7HDlwzltzyMj036AJ3ejJLCgCSHGj4efDDo= go.starlark.net v0.0.0-20250530210732-c81913c6f2e2 h1:N2WAN7QuNpXJWkx/i4LqZ5UP0v+mVwMpPORRJ2INJZc= go.starlark.net v0.0.0-20250530210732-c81913c6f2e2/go.mod h1:YKMCv9b1WrfWmeqdV5MAuEHWsu5iC+fe6kYl2sQjdI8= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 599a9802480418a72b842b34c3094b8dc62a1e05 Mon Sep 17 00:00:00 2001 From: Keming <kemingyang@tensorchord.ai> Date: Tue, 17 Jun 2025 09:58:48 +0800 Subject: [PATCH 353/355] fix: sshd handle the error (#2026) Signed-off-by: Keming <kemingyang@tensorchord.ai> --- pkg/lang/ir/v1/pixi.go | 2 +- pkg/lang/ir/v1/uv.go | 2 +- pkg/remote/sshd/sshd.go | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pkg/lang/ir/v1/pixi.go b/pkg/lang/ir/v1/pixi.go index 852571c2a..870e745bb 100644 --- a/pkg/lang/ir/v1/pixi.go +++ b/pkg/lang/ir/v1/pixi.go @@ -23,7 +23,7 @@ import ( ) const ( - pixiVersion = "0.45.0" + pixiVersion = "0.48.0" pixiConfigTemplate = ` {{- if .UsePixiMirror -}} [mirrors] diff --git a/pkg/lang/ir/v1/uv.go b/pkg/lang/ir/v1/uv.go index 768b98eac..3d3bd4834 100644 --- a/pkg/lang/ir/v1/uv.go +++ b/pkg/lang/ir/v1/uv.go @@ -17,7 +17,7 @@ package v1 import "github.com/moby/buildkit/client/llb" const ( - uvVersion = "0.6.5" + uvVersion = "0.7.10" ) func (g generalGraph) compileUV(root llb.State) llb.State { diff --git a/pkg/remote/sshd/sshd.go b/pkg/remote/sshd/sshd.go index 119ee8900..aaf380bab 100644 --- a/pkg/remote/sshd/sshd.go +++ b/pkg/remote/sshd/sshd.go @@ -256,13 +256,13 @@ func setWinSize(f *os.File, w, h int) { } } -func sendErrAndExit(logger *logrus.Entry, s ssh.Session, err error) { - msg := strings.TrimPrefix(err.Error(), "exec: ") +func sendErrAndExit(logger *logrus.Entry, s ssh.Session, exitErr error) { + msg := strings.TrimPrefix(exitErr.Error(), "exec: ") if _, err := s.Stderr().Write([]byte(msg)); err != nil { logger.WithError(err).Errorf("failed to write error back to session") } - if err := s.Exit(getExitStatusFromError(err)); err != nil { + if err := s.Exit(getExitStatusFromError(exitErr)); err != nil { logger.WithError(err).Errorf("pty session failed to exit") } } @@ -272,7 +272,7 @@ func getExitStatusFromError(err error) int { return 0 } - var exitErr exec.ExitError + var exitErr *exec.ExitError if ok := errors.As(err, &exitErr); !ok { return 1 } From 61bc8ddaca9343f5b61840a21b44c8960cfcf26d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 10:08:19 +0800 Subject: [PATCH 354/355] docs: updated CHANGELOG.md (#2011) Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: kemingy <12974685+kemingy@users.noreply.github.com> --- CHANGELOG.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3563e9c88..593ed4d86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,26 @@ # Changelog +## v1.2.1 (2025-06-17) + + * [599a980](https://github.com/tensorchord/envd/commit/599a9802480418a72b842b34c3094b8dc62a1e05) fix: sshd handle the error (#2026) + * [b964594](https://github.com/tensorchord/envd/commit/b96459498b2131d80446f46822a2a67eeed938ed) refact: bump tablewriter to v1, fix the breaking change (#2024) + * [a1a315e](https://github.com/tensorchord/envd/commit/a1a315e8e901fb5c04d52d4c8c0b59fe4da12be5) feat: add pixi template (#2014) + * [5f1f397](https://github.com/tensorchord/envd/commit/5f1f397ed6fbe32bd6b40c31300ebe12b7643155) feat: support pixi as an alternative to conda (#2012) + +### Contributors + + * Keming + +## v1.2.0 (2025-04-02) + + * [8514a4a](https://github.com/tensorchord/envd/commit/8514a4aee1bc96c9677995cedc0cc93e20063670) fix: locale for both dev=True/False (#2010) + * [2506ede](https://github.com/tensorchord/envd/commit/2506ede9f274403e66360029f98f6bd12faac243) feat: bump fish to the official release version (#2000) + * [a78a245](https://github.com/tensorchord/envd/commit/a78a2454ca633ad403b12920ef71a534f8b819d5) feat: emb the whole template/*.envd, avoid random map key order (#1995) + +### Contributors + + * Keming + ## v1.1.0 (2025-03-10) * [207c30e](https://github.com/tensorchord/envd/commit/207c30ee9556bb6915996166507fbc81ec26309a) feat: add pre-defined envd template (#1991) From 826deb00abdd458a7f1ddc04874534f783cded09 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 28 Jun 2025 08:28:00 +0800 Subject: [PATCH 355/355] chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.2.1 to 2.3.0 (#2027) chore(deps): bump github.com/go-viper/mapstructure/v2 Bumps [github.com/go-viper/mapstructure/v2](https://github.com/go-viper/mapstructure) from 2.2.1 to 2.3.0. - [Release notes](https://github.com/go-viper/mapstructure/releases) - [Changelog](https://github.com/go-viper/mapstructure/blob/main/CHANGELOG.md) - [Commits](https://github.com/go-viper/mapstructure/compare/v2.2.1...v2.3.0) --- updated-dependencies: - dependency-name: github.com/go-viper/mapstructure/v2 dependency-version: 2.3.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index d2c4d89c7..2cd13c997 100644 --- a/go.mod +++ b/go.mod @@ -116,7 +116,7 @@ require ( github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/go-task/slim-sprig/v3 v3.0.0 // indirect - github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/go-viper/mapstructure/v2 v2.3.0 // indirect github.com/gofrs/flock v0.12.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect diff --git a/go.sum b/go.sum index 77417ffa9..fe5f8e49a 100644 --- a/go.sum +++ b/go.sum @@ -919,8 +919,8 @@ github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhO github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= -github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= -github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.3.0 h1:27XbWsHIqhbdR5TIC911OfYvgSaW93HM+dX7970Q7jk= +github.com/go-viper/mapstructure/v2 v2.3.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=