File: 0001-Remove-com.cognitec.aws.-dependencies.patch

package info (click to toggle)
tools-deps-clojure 0.16.1264-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 528 kB
  • sloc: xml: 172; sh: 37; makefile: 15
file content (373 lines) | stat: -rw-r--r-- 16,107 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
From: =?utf-8?b?SsOpcsO0bWUgQ2hhcmFvdWk=?= <jerome@riseup.net>
Date: Fri, 23 Dec 2022 19:25:51 -0500
Subject: Remove com.cognitec.aws.* dependencies

Not packaged in Debian, and not core functionality.

Forwarded: not-needed
---
 pom.xml                                            |  15 ---
 src/main/clojure/clojure/tools/deps/util/maven.clj |   3 +-
 .../clojure/tools/deps/util/s3_aws_client.clj      |  42 ------
 .../clojure/tools/deps/util/s3_transporter.clj     | 149 ---------------------
 .../tools/deps/util/S3TransporterFactory.java      |  57 --------
 .../tools/deps/util/test_s3_transporter.clj        |  39 ------
 6 files changed, 1 insertion(+), 304 deletions(-)
 delete mode 100644 src/main/clojure/clojure/tools/deps/util/s3_aws_client.clj
 delete mode 100644 src/main/clojure/clojure/tools/deps/util/s3_transporter.clj
 delete mode 100644 src/main/java/clojure/tools/deps/util/S3TransporterFactory.java
 delete mode 100644 src/test/clojure/clojure/tools/deps/util/test_s3_transporter.clj

diff --git a/pom.xml b/pom.xml
index 5983703..e789213 100644
--- a/pom.xml
+++ b/pom.xml
@@ -120,21 +120,6 @@
       <artifactId>tools.cli</artifactId>
       <version>1.0.214</version>
     </dependency>
-    <dependency>
-      <groupId>com.cognitect.aws</groupId>
-      <artifactId>api</artifactId>
-      <version>0.8.612</version>
-    </dependency>
-    <dependency>
-      <groupId>com.cognitect.aws</groupId>
-      <artifactId>endpoints</artifactId>
-      <version>1.1.12.321</version>
-    </dependency>
-    <dependency>
-      <groupId>com.cognitect.aws</groupId>
-      <artifactId>s3</artifactId>
-      <version>822.2.1145.0</version>
-    </dependency>
     <dependency>
       <groupId>javax.inject</groupId>
       <artifactId>javax.inject</artifactId>
diff --git a/src/main/clojure/clojure/tools/deps/util/maven.clj b/src/main/clojure/clojure/tools/deps/util/maven.clj
index f5182af..b44d356 100644
--- a/src/main/clojure/clojure/tools/deps/util/maven.clj
+++ b/src/main/clojure/clojure/tools/deps/util/maven.clj
@@ -11,8 +11,7 @@
   (:require
     [clojure.java.io :as jio]
     [clojure.string :as str]
-    [clojure.tools.deps.util.io :refer [printerrln]]
-    clojure.tools.deps.util.s3-transporter)
+    [clojure.tools.deps.util.io :refer [printerrln]])
   (:import
     ;; maven-resolver-api
     [org.eclipse.aether RepositorySystem RepositorySystemSession DefaultRepositoryCache DefaultRepositorySystemSession ConfigurationProperties]
diff --git a/src/main/clojure/clojure/tools/deps/util/s3_aws_client.clj b/src/main/clojure/clojure/tools/deps/util/s3_aws_client.clj
deleted file mode 100644
index abe9ee2..0000000
--- a/src/main/clojure/clojure/tools/deps/util/s3_aws_client.clj
+++ /dev/null
@@ -1,42 +0,0 @@
-;   Copyright (c) Rich Hickey. All rights reserved.
-;   The use and distribution terms for this software are covered by the
-;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
-;   which can be found in the file epl-v10.html at the root of this distribution.
-;   By using this software in any fashion, you are agreeing to be bound by
-;   the terms of this license.
-;   You must not remove this notice, or any other, from this software.
-
-(ns ^{:skip-wiki true}
-  clojure.tools.deps.util.s3-aws-client
-  (:require
-    [cognitect.aws.client.api :as aws]
-    [cognitect.aws.credentials :as creds]))
-
-(defn- aws-creds-provider
-  [user pw]
-  (reify creds/CredentialsProvider
-    (fetch [_]
-      {:aws/access-key-id user
-       :aws/secret-access-key pw})))
-
-(defn- get-bucket-loc
-  [config bucket]
-  (let [s3-client (aws/client (merge {:region "us-east-1"} config))
-        resp (try
-               (aws/invoke s3-client {:op :GetBucketLocation
-                                      :request {:Bucket bucket}})
-               (catch Throwable _ nil))
-        region (:LocationConstraint resp)]
-    (cond
-      (nil? region) nil
-      (= region "") "us-east-1"
-      :else region)))
-
-(defn new-s3-client
-  [user pw region bucket]
-  (let [cred-provider (when (and user pw)
-                        (aws-creds-provider user pw))
-        config (cond-> {:api :s3}
-                 cred-provider (assoc :credentials-provider cred-provider))
-        use-region (or region (get-bucket-loc config bucket) "us-east-1")]
-    (aws/client (assoc config :region use-region))))
\ No newline at end of file
diff --git a/src/main/clojure/clojure/tools/deps/util/s3_transporter.clj b/src/main/clojure/clojure/tools/deps/util/s3_transporter.clj
deleted file mode 100644
index f6167c2..0000000
--- a/src/main/clojure/clojure/tools/deps/util/s3_transporter.clj
+++ /dev/null
@@ -1,149 +0,0 @@
-;   Copyright (c) Rich Hickey. All rights reserved.
-;   The use and distribution terms for this software are covered by the
-;   Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
-;   which can be found in the file epl-v10.html at the root of this distribution.
-;   By using this software in any fashion, you are agreeing to be bound by
-;   the terms of this license.
-;   You must not remove this notice, or any other, from this software.
-
-(ns ^{:skip-wiki true}
-  clojure.tools.deps.util.s3-transporter
-  (:refer-clojure :exclude [peek get])
-  (:require
-    [clojure.string :as str])
-  (:import
-    [java.io InputStream OutputStream IOException]
-    [java.net URI]
-    [java.nio ByteBuffer]
-    [org.eclipse.aether RepositorySystemSession]
-    [org.eclipse.aether.repository RemoteRepository AuthenticationContext]
-    [org.eclipse.aether.spi.connector.transport Transporter PeekTask GetTask]))
-
-(set! *warn-on-reflection* true)
-
-(defn s3-peek
-  "Returns nil if path exists, anomaly category otherwise"
-  [s3-client bucket path]
-  (let [s3-response ((requiring-resolve 'cognitect.aws.client.api/invoke) s3-client
-                      {:op :HeadObject,
-                       :request {:Bucket bucket, :Key path}})]
-    (:cognitect.anomalies/category s3-response)))
-
-(defn stream-copy
-  [^OutputStream os ^InputStream is ^long offset on-read]
-  (let [bb (ByteBuffer/allocate 32768)
-        ba (.array bb)]
-    (when (pos? offset)
-      (let [skipped (.skip is offset)]
-        (when-not (= skipped offset)
-          (throw (IOException. (str "Failed skipping " offset ", only skipped " skipped))))))
-    (try
-      (loop []
-        (let [read (.read is ba)]
-          (when (<= 0 read)
-            (.write os ba 0 read)
-            (.rewind bb)
-            (.limit bb read)
-            (on-read bb)
-            (recur))))
-      (finally
-        (.close is)
-        (.close os)))))
-
-(defn s3-get-object
-  [s3-client bucket path ^OutputStream output-stream offset on-read]
-  (let [s3-response ((requiring-resolve 'cognitect.aws.client.api/invoke) s3-client {:op :GetObject, :request {:Bucket bucket, :Key path}})
-        is ^InputStream (:Body s3-response)]
-    (if is
-      (stream-copy output-stream is offset on-read)
-      (let [{:keys [cognitect.anomalies/category cognitect.http-client/throwable cognitect.anomalies/message]} s3-response]
-        (if (#{:cognitect.anomalies/forbidden :cognitect.anomalies/not-found} category)
-          (throw (ex-info "Artifact not found" {:bucket bucket, :path path, :reason category}))
-          (throw (ex-info (format "Unexpected error downloading artifact from %s" bucket)
-                   {:bucket bucket, :path path, :reason category} throwable)))))))
-
-;; s3://BUCKET/PATH?region=us-east-1
-(defn parse-url
-  [^RemoteRepository repo]
-  (let [u (URI/create (.getUrl repo))
-        host (.getHost u)
-        path (str/join "/" (remove str/blank? (str/split (.getPath u) #"/")))
-        query (.getQuery u)
-        kvs (when query (str/split query #"&"))
-        {:strs [region]} (reduce (fn [m kv] (let [[k v] (str/split kv #"=")] (assoc m k v))) {} kvs)]
-    {:bucket host, :region region, :repo-path path}))
-
-(let [lock (Object.)]
-  (defn- dynaload-s3-client
-    [client-atom user pw region bucket]
-    (locking lock (require 'clojure.tools.deps.util.s3-aws-client))
-    (let [f (requiring-resolve 'clojure.tools.deps.util.s3-aws-client/new-s3-client)]
-      (swap! client-atom #(if % % (f user pw region bucket)))
-      @client-atom)))
-
-(defn new-transporter
-  [^RepositorySystemSession session ^RemoteRepository repository]
-  (let [auth-context (AuthenticationContext/forRepository session repository)
-        user (when auth-context (.get auth-context AuthenticationContext/USERNAME))
-        pw (when auth-context (.get auth-context AuthenticationContext/PASSWORD))
-        on-close #(when auth-context (.close auth-context))
-        {:keys [bucket region repo-path]} (parse-url repository)
-        s3-client-holder (atom nil)] ;; defer creation till needed
-    (reify Transporter
-      (^void peek [_ ^PeekTask peek-task]
-        (let [path (.. peek-task getLocation toString)
-              full-path (str repo-path "/" path)
-              s3-client (dynaload-s3-client s3-client-holder user pw region bucket)
-              res (s3-peek s3-client bucket full-path)]
-          (when res
-            (throw (ex-info "Artifact not found" {:bucket bucket, :path path, :reason res})))))
-      (^void get [_ ^GetTask get-task]
-        (let [path (.. get-task getLocation toString)
-              full-path (str repo-path "/" path)
-              offset (.getResumeOffset get-task)
-              os (.newOutputStream get-task (> offset 0))
-              listener (.getListener get-task)
-              s3-client (dynaload-s3-client s3-client-holder user pw region bucket)]
-          (.transportStarted listener offset -1)
-          (s3-get-object s3-client bucket full-path os offset #(.transportProgressed listener %))))
-      (classify [_ throwable]
-        (if (#{:cognitect.anomalies/forbidden :cognitect.anomalies/not-found} (-> throwable ex-data :reason))
-          Transporter/ERROR_NOT_FOUND
-          Transporter/ERROR_OTHER))
-      ;;(put [_ ^PutTask put-task])   ;; not supported
-      (close [_]
-        (when on-close (on-close))))))
-
-(comment
-  (require '[cognitect.aws.client.api :as aws] 'clojure.repl)
-  ;; use ambient creds
-  (def s3-client (aws/client {:api :s3 :region :us-east-1}))
-
-
-  (def resp (aws/invoke s3-client {:op :GetObject
-                                   :request {:Bucket "datomic-releases-1fc2183a"
-                                             :Key "maven/releases/com/datomic/ion/0.9.35/ion-0.9.35.pom"}}))
-
-  (aws/invoke s3-client {:op :GetBucketLocation
-                         :request {:Bucket "datomic-releases-1fc2183a"}})
-
-  (aws/invoke s3-client {:op :GetObject
-                         :request {:Bucket "datomic-releases-1fc2183a"
-                                   :Key "/maven/releases/com/datomic/ion/0.9.35/ion-0.9.35.pom"}})
-
-  (s3-peek s3-client "datomic-releases-1fc2183a" "/maven/releases/com/datomic/ion/0.9.35/ion-0.9.35.pom")
-
-  (with-open [os (java.io.FileOutputStream. "download.pom")]
-    (s3-get-object s3-client "datomic-releases-1fc2183a" "/maven/releases/com/datomic/ion/0.9.35/ion-0.9.35.pom"
-      os 0 #(println "read data" %)))
-
-  (def ann (s3-peek s3-client "datomic-releases-1fc2183a" "/maven/releases/com/datomic/ion/0.9.35/ion-0.9.35.foo"))
-
-  (aws/ops s3-client)
-  (aws/invoke s3-client {:op :GetBucketAcl, :request {:Bucket "datomic-releases-1fc2183a"}})
-  (aws/validate-requests s3-client true)
-  (aws/request-spec-key s3-client :GetObject)
-  (clojure.repl/doc :cognitect.aws.s3/GetObjectRequest)
-  (aws/doc s3-client :cognitect.aws.s3/GetBucketLocation)
-  (clojure.repl/doc aws/request-spec-key)
-  )
diff --git a/src/main/java/clojure/tools/deps/util/S3TransporterFactory.java b/src/main/java/clojure/tools/deps/util/S3TransporterFactory.java
deleted file mode 100644
index 75c9a68..0000000
--- a/src/main/java/clojure/tools/deps/util/S3TransporterFactory.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) Rich Hickey. All rights reserved.
- * The use and distribution terms for this software are covered by the
- * Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
- * which can be found in the file epl-v10.html at the root of this distribution.
- * By using this software in any fashion, you are agreeing to be bound by
- * the terms of this license.
- * You must not remove this notice, or any other, from this software.
- */
-package clojure.tools.deps.util;
-
-import javax.inject.Named;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.spi.connector.transport.Transporter;
-import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-import org.eclipse.aether.spi.locator.Service;
-import org.eclipse.aether.spi.locator.ServiceLocator;
-import clojure.java.api.Clojure;
-import clojure.lang.IFn;
-import org.eclipse.aether.transfer.NoTransporterException;
-
-/**
- * Transporter factory for repositories using the s3 protocol.
- */
-@Named("s3")
-public final class S3TransporterFactory implements TransporterFactory, Service {
-
-    private static class DelayedInstance {
-        private static final IFn NEW_TRANSPORTER;
-
-        static {
-            IFn REQUIRE = Clojure.var("clojure.core", "require");
-            REQUIRE.invoke(Clojure.read("clojure.tools.deps.util.s3-transporter"));
-            NEW_TRANSPORTER = Clojure.var("clojure.tools.deps.util.s3-transporter", "new-transporter");
-        }
-    }
-
-    private S3TransporterFactory() {}
-
-    public void initService(ServiceLocator locator) {
-    }
-
-    public Transporter newInstance(RepositorySystemSession session, RemoteRepository repository) throws NoTransporterException {
-        String protocol = repository.getProtocol();
-        if("s3".equals(protocol)) {
-            return (Transporter) DelayedInstance.NEW_TRANSPORTER.invoke(session, repository);
-        } else {
-            throw new NoTransporterException(repository);
-        }
-    }
-
-    public float getPriority() {
-        return 5.0f;
-    }
-
-}
diff --git a/src/test/clojure/clojure/tools/deps/util/test_s3_transporter.clj b/src/test/clojure/clojure/tools/deps/util/test_s3_transporter.clj
deleted file mode 100644
index a4b0a76..0000000
--- a/src/test/clojure/clojure/tools/deps/util/test_s3_transporter.clj
+++ /dev/null
@@ -1,39 +0,0 @@
-(ns clojure.tools.deps.util.test-s3-transporter
-  (:require
-    [clojure.test :refer [are deftest]]
-    [clojure.tools.deps.util.s3-transporter :as s3t]
-    [clojure.tools.deps.util.maven :as mvn])
-  (:import
-    [java.io File]
-    [java.net URI]
-    [org.eclipse.aether.spi.connector.transport Transporter GetTask TransportListener]))
-
-(set! *warn-on-reflection* true)
-
-(deftest test-parse
-  (are [u r b p] (= (merge {:region nil, :bucket nil, :repo-path nil}
-                      (s3t/parse-url (mvn/remote-repo [nil {:url u}])))
-                   {:region r :bucket b :repo-path p})
-    "s3://BUCKET/PATH1/PATH2" nil "BUCKET" "PATH1/PATH2"
-    "s3://BUCKET/PATH1/PATH2?region=REGION" "REGION" "BUCKET" "PATH1/PATH2"))
-
-(defn downloader
-  [repo url path]
-  (let [system (mvn/make-system)
-        settings (mvn/get-settings)
-        session (mvn/make-session system settings "/Users/alex/.m2/repository")
-        remote-repo (mvn/remote-repo [repo {:url url}])
-        transporter (s3t/new-transporter session remote-repo)
-        task (GetTask. (URI/create path))
-        temp (File/createTempFile "dload-" nil)]
-    (.setDataFile task temp)
-    (.setListener task (proxy [TransportListener] []
-                         (transportStarted [_ _])
-                         (transportProgressed [_])))
-    (.get ^Transporter transporter task)
-    (slurp temp)))
-
-(comment
-  (downloader "datomic" "s3://datomic-releases-1fc2183a/maven/releases" "com/datomic/ion/0.9.35/ion-0.9.35.pom")
-  (downloader "datomic" "s3://datomic-releases-1fc2183a/maven/releases?region=us-east-1" "com/datomic/ion/0.9.35/ion-0.9.35.pom")
-  )
\ No newline at end of file