Skip to content

Commit d6d5407

Browse files
frenchy64puredanger
authored andcommitted
TDEPS-269: Check artifact checksums in Linux installers
1 parent f1bfdf7 commit d6d5407

3 files changed

Lines changed: 12 additions & 8 deletions

File tree

script/build.clj

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,6 @@
6262
(b/copy-file {:src (str doc-dir "/clojure.1") :target (str tar-dir "/clj.1")})
6363
(b/copy-dir {:src-dirs [target-dir] :target-dir tar-dir :include "*.jar"})
6464
(b/process {:command-args ["tar" "-cvzf" tar-file "-Ctarget" "clojure-tools"]})
65-
(b/copy-file {:src (str filtered-dir "/clojure/install/linux-install.sh") :target (str target-dir "/linux-install.sh")})
66-
(b/copy-file {:src (str filtered-dir "/clojure/install/posix-install.sh") :target (str target-dir "/posix-install.sh")})
6765

6866
;; Collect the windows files and make the windows zip file and installer
6967
(doseq [f ["ClojureTools.psd1" "ClojureTools.psm1" "deps.edn" "example-deps.edn" "tools.edn"]]
@@ -72,9 +70,13 @@
7270
(b/zip {:src-dirs [zip-dir] :zip-file zip-file})
7371
(b/copy-file {:src (str filtered-dir "/clojure/install/win-install.ps1") :target (str target-dir "/win-install.ps1")})
7472

75-
;; Prep the brew files
76-
(let [sha (-> (:out (b/process {:command-args ["shasum" "-a" "256" tar-file] :out :capture})) (subs 0 64))
77-
brew-recipe (slurp (str filtered-dir "/clojure/install/clojure.rb"))
78-
version-recipe (slurp (str filtered-dir "/clojure/install/clojure@version.rb"))]
79-
(b/write-file {:path "target/clojure.rb" :string (str/replace brew-recipe "SHA" sha)})
80-
(b/write-file {:path (format "target/clojure@%s.rb" version) :string (str/replace version-recipe "SHA" sha)})))
73+
;; Embed artifact checksums within installers
74+
(let [sha (-> (:out (b/process {:command-args ["shasum" "-a" "256" tar-file] :out :capture})) (subs 0 64))]
75+
(doseq [[src target] [["clojure/install/clojure.rb"]
76+
["clojure/install/clojure@version.rb" (format "clojure@%s.rb" version)]
77+
["clojure/install/linux-install.sh"]
78+
["clojure/install/posix-install.sh"]]
79+
:let [target (str target-dir "/" (or target (peek (str/split src #"/"))))
80+
src (str filtered-dir "/" src)]]
81+
(b/write-file {:path target
82+
:string (str/replace (slurp src) "SHA" sha)}))))

src/main/resources/clojure/install/linux-install.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ fi
2727

2828
echo "Downloading and expanding tar"
2929
curl -L -O -f -m 120 --connect-timeout 5 --retry 5 --retry-connrefused --retry-max-time 60 --no-progress-meter https://github.com/clojure/brew-install/releases/download/${project.version}/clojure-tools-${project.version}.tar.gz
30+
echo "SHA clojure-tools-${project.version}.tar.gz" | shasum -a 256 -c | grep "^clojure-tools-${project.version}.tar.gz: OK$"
3031
tar xzf clojure-tools-${project.version}.tar.gz
3132

3233
lib_dir="$prefix_dir/lib"

src/main/resources/clojure/install/posix-install.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ fi
2727

2828
echo "Downloading and expanding tar"
2929
curl -L -O -f -m 120 --connect-timeout 5 --retry 5 --retry-connrefused --retry-max-time 60 --no-progress-meter https://github.com/clojure/brew-install/releases/download/${project.version}/clojure-tools-${project.version}.tar.gz
30+
echo "SHA clojure-tools-${project.version}.tar.gz" | shasum -a 256 -c | grep "^clojure-tools-${project.version}.tar.gz: OK$"
3031
tar xzf clojure-tools-${project.version}.tar.gz
3132

3233
lib_dir="$prefix_dir/lib"

0 commit comments

Comments
 (0)