Skip to content

Commit 2b181f4

Browse files
committed
Update Leiningen to 2.13.0, built from verified source
Leiningen 2.13.0 no longer publishes a standalone uberjar (Codeberg has no release asset; only a thin jar is on Clojars), and the only prebuilt one is on the deprecated GitHub mirror. Instead, build the uberjar from source in the image: clone the release tag, verify its GPG signature (Phil Hagelberg's key, the same trust anchor the old prebuilt-jar verification used), bootstrap leiningen-core's dependencies with Maven, run `lein uberjar`, and install the result alongside the upstream `bin/lein-pkg`. 2.13.0 requires Java 11+ (its source uses `java.nio.file.Path/of`), so lein is dropped for JDK 8 via an exclusion; tools-deps still covers JDK 8. Build deps switch from wget/gnupg to git/gnupg/maven. The old prebuilt-jar download path is gone, so the lein installer hashes are removed. Verified by building the generated debian-slim (JDK 11) and alpine (JDK 21) images end to end: the signed tag verifies, and both report "Leiningen 2.13.0" and pre-cache Clojure.
1 parent 42f7033 commit 2b181f4

63 files changed

Lines changed: 916 additions & 1576 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

resources/templates/lein.tmpl

Lines changed: 16 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,29 @@ ENV LEIN_INSTALL=/usr/local/bin/
33

44
WORKDIR /tmp
55

6-
# Download the whole repo as an archive
6+
# No standalone uberjar is published for this version, so build it from source.
7+
# Verify Leiningen's GPG-signed release tag, then bootstrap leiningen-core's
8+
# dependencies with Maven and run `lein uberjar`.
79
RUN set -eux; \
810
{% for dep in install-deps %}{{dep}} && \
9-
{% endfor %}mkdir -p $LEIN_INSTALL && \
10-
wget -q https://codeberg.org/leiningen/leiningen/raw/tag/$LEIN_VERSION/bin/lein-pkg && \
11-
echo "Comparing lein-pkg checksum ..." && \
12-
sha256sum lein-pkg && \
13-
echo "{{lein-pkg-hash}} *lein-pkg" | sha256sum -c - && \
14-
mv lein-pkg $LEIN_INSTALL/lein && \
15-
chmod 0755 $LEIN_INSTALL/lein && \
16-
export GNUPGHOME="$(mktemp -d)" && \
17-
export FILENAME_EXT=jar && \
11+
{% endfor %}export GNUPGHOME="$(mktemp -d)" && \
12+
export LEIN_ROOT=1 && \
13+
mkdir -p $LEIN_INSTALL /usr/share/java /root/.lein && \
1814
gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys {{gpg-key}} && \
19-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
20-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
21-
echo "Verifying file PGP signature..." && \
22-
gpg --batch --verify leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
15+
git clone --depth 1 --branch $LEIN_VERSION https://codeberg.org/leiningen/leiningen.git && \
16+
cd leiningen && \
17+
git verify-tag $LEIN_VERSION && \
18+
( cd leiningen-core && mvn -B -q -DskipTests install && mvn -B -q dependency:build-classpath -Dmdep.outputFile=.lein-bootstrap ) && \
19+
bin/lein uberjar && \
20+
install -m 0644 target/leiningen-$LEIN_VERSION-standalone.jar /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
21+
install -m 0755 bin/lein-pkg $LEIN_INSTALL/lein && \
2322
gpgconf --kill all && \
24-
rm -rf "$GNUPGHOME" leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
25-
mkdir -p /usr/share/java && \
26-
mkdir -p /root/.lein && \
27-
mv leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar{% for dep in uninstall-deps %} && \
23+
cd /tmp && \
24+
rm -rf /tmp/leiningen /root/.m2 "$GNUPGHOME"{% for dep in uninstall-deps %} && \
2825
{{dep}}{% endfor %}
2926

3027
ENV PATH=$PATH:$LEIN_INSTALL
31-
ENV LEIN_ROOT 1
28+
ENV LEIN_ROOT=1
3229

3330
# Install clojure {{clojure-version}} so users don't have to download it every time
3431
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "{{clojure-version}}"]])' > project.clj \

src/docker_clojure/config.clj

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,19 +105,20 @@
105105
:default :debian/bookworm})
106106

107107
(def build-tools
108-
{"lein" "2.12.0"
108+
{"lein" "2.13.0"
109109
"tools-deps" "1.12.5.1654"})
110110

111111
(def default-build-tool "tools-deps")
112112

113113
(def installer-hashes
114-
{"lein" {"2.11.2" "28a1a62668c5f427b413a8677e376affaa995f023b1fcd06e2d4c98ac1df5f3e"
115-
"2.12.0" "12a9c5e3a2471619ca3d64a7462f920fdf713ae8959eb4fcd6257c23332b5aa4"}
116-
"tools-deps" {"1.12.5.1645" "3d6e8428fd4c7f76de9f87f77b2347f293109f4e88fb20c154b3fa34a7f687dd"
114+
{"tools-deps" {"1.12.5.1645" "3d6e8428fd4c7f76de9f87f77b2347f293109f4e88fb20c154b3fa34a7f687dd"
117115
"1.12.5.1654" "28f81b0833c0a072f4370ae0eb1e4c5a4f9f4a34035cd7607ea9f253a8b06da1"}})
118116

119117
(def exclusions ; don't build these for whatever reason(s)
120-
#{;; No more jammy builds for JDK 23+
118+
#{;; Leiningen 2.13.0+ requires Java 11+
119+
{:jdk-version #(< % 11)
120+
:build-tool "lein"}
121+
;; No more jammy builds for JDK 23+
121122
{:jdk-version #(>= % 23)
122123
:distro :ubuntu/jammy}
123124
;; No upstream ARM alpine images available before JDK 21

src/docker_clojure/dockerfile/lein.clj

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
(ns docker-clojure.dockerfile.lein
2-
(:require [clojure.string :as str]
3-
[docker-clojure.dockerfile.shared
2+
(:require [docker-clojure.dockerfile.shared
43
:refer [install-distro-deps render-template
54
uninstall-distro-build-deps]]))
65

76
(defn prereqs [_ _] nil)
87

8+
;; Leiningen no longer publishes a standalone uberjar, so we build it from
9+
;; source: clone the GPG-signed release tag, bootstrap leiningen-core's deps
10+
;; with Maven, and run `lein uberjar`. That needs git, gnupg & Maven at build
11+
;; time.
912
(def distro-deps
10-
{:debian-slim {:build #{"wget" "gnupg"}
13+
{:debian-slim {:build #{"git" "gnupg" "maven"}
1114
:runtime #{}}
12-
:debian {:build #{"wget" "gnupg"}
15+
:debian {:build #{"git" "gnupg" "maven"}
1316
:runtime #{"make"}}
14-
:ubuntu {:build #{"wget" "gnupg"}
17+
:ubuntu {:build #{"git" "gnupg" "maven"}
1518
:runtime #{"make"}}
16-
:alpine {:build #{"tar" "gnupg" "openssl" "ca-certificates"}
19+
:alpine {:build #{"git" "gnupg" "maven" "ca-certificates"}
1720
:runtime #{"bash"}}})
1821

1922
(def install-deps (partial install-distro-deps distro-deps))
@@ -22,26 +25,17 @@
2225

2326
;; Clojure version pre-installed into lein images so users don't download it on
2427
;; first use.
25-
(def ^:const bundled-clojure-version "1.12.1")
28+
(def ^:const bundled-clojure-version "1.12.5")
2629

27-
(def ^:const old-key "6A2D483DB59437EBB97D09B1040193357D0606ED")
28-
(def ^:const new-key "9D13D9426A0814B3373CF5E3D8A8243577A7859F")
30+
;; Leiningen release tags are signed with this key (Phil Hagelberg).
31+
(def ^:const signing-key "9D13D9426A0814B3373CF5E3D8A8243577A7859F")
2932

30-
(defn gpg-key
31-
[version]
32-
(let [[major minor] (map #(Integer/parseInt %) (str/split version #"\."))]
33-
(cond
34-
(< 2 major) new-key
35-
(and (= 2 major) (< 10 minor)) new-key
36-
:else old-key)))
37-
38-
(defn install [installer-hashes {:keys [build-tool-version] :as variant}]
33+
(defn install [_installer-hashes {:keys [build-tool-version] :as variant}]
3934
(render-template
4035
"templates/lein.tmpl"
4136
{:lein-version build-tool-version
4237
:clojure-version bundled-clojure-version
43-
:lein-pkg-hash (get-in installer-hashes ["lein" build-tool-version])
44-
:gpg-key (gpg-key build-tool-version)
38+
:gpg-key signing-key
4539
:install-deps (install-deps variant)
4640
:uninstall-deps (uninstall-build-deps variant)}))
4741

target/debian-bookworm-11/lein/Dockerfile

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,39 @@ ENV JAVA_HOME=/opt/java/openjdk
44
COPY --from=eclipse-temurin:11 $JAVA_HOME $JAVA_HOME
55
ENV PATH="${JAVA_HOME}/bin:${PATH}"
66

7-
ENV LEIN_VERSION=2.12.0
7+
ENV LEIN_VERSION=2.13.0
88
ENV LEIN_INSTALL=/usr/local/bin/
99

1010
WORKDIR /tmp
1111

12-
# Download the whole repo as an archive
12+
# No standalone uberjar is published for this version, so build it from source.
13+
# Verify Leiningen's GPG-signed release tag, then bootstrap leiningen-core's
14+
# dependencies with Maven and run `lein uberjar`.
1315
RUN set -eux; \
1416
apt-get update && \
15-
apt-get install -y make gnupg wget && \
17+
apt-get install -y make maven git gnupg && \
1618
rm -rf /var/lib/apt/lists/* && \
17-
mkdir -p $LEIN_INSTALL && \
18-
wget -q https://codeberg.org/leiningen/leiningen/raw/tag/$LEIN_VERSION/bin/lein-pkg && \
19-
echo "Comparing lein-pkg checksum ..." && \
20-
sha256sum lein-pkg && \
21-
echo "12a9c5e3a2471619ca3d64a7462f920fdf713ae8959eb4fcd6257c23332b5aa4 *lein-pkg" | sha256sum -c - && \
22-
mv lein-pkg $LEIN_INSTALL/lein && \
23-
chmod 0755 $LEIN_INSTALL/lein && \
2419
export GNUPGHOME="$(mktemp -d)" && \
25-
export FILENAME_EXT=jar && \
20+
export LEIN_ROOT=1 && \
21+
mkdir -p $LEIN_INSTALL /usr/share/java /root/.lein && \
2622
gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 9D13D9426A0814B3373CF5E3D8A8243577A7859F && \
27-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
28-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
29-
echo "Verifying file PGP signature..." && \
30-
gpg --batch --verify leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
23+
git clone --depth 1 --branch $LEIN_VERSION https://codeberg.org/leiningen/leiningen.git && \
24+
cd leiningen && \
25+
git verify-tag $LEIN_VERSION && \
26+
( cd leiningen-core && mvn -B -q -DskipTests install && mvn -B -q dependency:build-classpath -Dmdep.outputFile=.lein-bootstrap ) && \
27+
bin/lein uberjar && \
28+
install -m 0644 target/leiningen-$LEIN_VERSION-standalone.jar /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
29+
install -m 0755 bin/lein-pkg $LEIN_INSTALL/lein && \
3130
gpgconf --kill all && \
32-
rm -rf "$GNUPGHOME" leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
33-
mkdir -p /usr/share/java && \
34-
mkdir -p /root/.lein && \
35-
mv leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
36-
apt-get purge -y --auto-remove gnupg wget
31+
cd /tmp && \
32+
rm -rf /tmp/leiningen /root/.m2 "$GNUPGHOME" && \
33+
apt-get purge -y --auto-remove maven git gnupg
3734

3835
ENV PATH=$PATH:$LEIN_INSTALL
39-
ENV LEIN_ROOT 1
36+
ENV LEIN_ROOT=1
4037

41-
# Install clojure 1.12.1 so users don't have to download it every time
42-
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.1"]])' > project.clj \
38+
# Install clojure 1.12.5 so users don't have to download it every time
39+
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.5"]])' > project.clj \
4340
&& lein deps && rm project.clj
4441

4542
CMD ["lein", "repl"]

target/debian-bookworm-17/lein/Dockerfile

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,39 @@ ENV JAVA_HOME=/opt/java/openjdk
44
COPY --from=eclipse-temurin:17 $JAVA_HOME $JAVA_HOME
55
ENV PATH="${JAVA_HOME}/bin:${PATH}"
66

7-
ENV LEIN_VERSION=2.12.0
7+
ENV LEIN_VERSION=2.13.0
88
ENV LEIN_INSTALL=/usr/local/bin/
99

1010
WORKDIR /tmp
1111

12-
# Download the whole repo as an archive
12+
# No standalone uberjar is published for this version, so build it from source.
13+
# Verify Leiningen's GPG-signed release tag, then bootstrap leiningen-core's
14+
# dependencies with Maven and run `lein uberjar`.
1315
RUN set -eux; \
1416
apt-get update && \
15-
apt-get install -y make gnupg wget && \
17+
apt-get install -y make maven git gnupg && \
1618
rm -rf /var/lib/apt/lists/* && \
17-
mkdir -p $LEIN_INSTALL && \
18-
wget -q https://codeberg.org/leiningen/leiningen/raw/tag/$LEIN_VERSION/bin/lein-pkg && \
19-
echo "Comparing lein-pkg checksum ..." && \
20-
sha256sum lein-pkg && \
21-
echo "12a9c5e3a2471619ca3d64a7462f920fdf713ae8959eb4fcd6257c23332b5aa4 *lein-pkg" | sha256sum -c - && \
22-
mv lein-pkg $LEIN_INSTALL/lein && \
23-
chmod 0755 $LEIN_INSTALL/lein && \
2419
export GNUPGHOME="$(mktemp -d)" && \
25-
export FILENAME_EXT=jar && \
20+
export LEIN_ROOT=1 && \
21+
mkdir -p $LEIN_INSTALL /usr/share/java /root/.lein && \
2622
gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 9D13D9426A0814B3373CF5E3D8A8243577A7859F && \
27-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
28-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
29-
echo "Verifying file PGP signature..." && \
30-
gpg --batch --verify leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
23+
git clone --depth 1 --branch $LEIN_VERSION https://codeberg.org/leiningen/leiningen.git && \
24+
cd leiningen && \
25+
git verify-tag $LEIN_VERSION && \
26+
( cd leiningen-core && mvn -B -q -DskipTests install && mvn -B -q dependency:build-classpath -Dmdep.outputFile=.lein-bootstrap ) && \
27+
bin/lein uberjar && \
28+
install -m 0644 target/leiningen-$LEIN_VERSION-standalone.jar /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
29+
install -m 0755 bin/lein-pkg $LEIN_INSTALL/lein && \
3130
gpgconf --kill all && \
32-
rm -rf "$GNUPGHOME" leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
33-
mkdir -p /usr/share/java && \
34-
mkdir -p /root/.lein && \
35-
mv leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
36-
apt-get purge -y --auto-remove gnupg wget
31+
cd /tmp && \
32+
rm -rf /tmp/leiningen /root/.m2 "$GNUPGHOME" && \
33+
apt-get purge -y --auto-remove maven git gnupg
3734

3835
ENV PATH=$PATH:$LEIN_INSTALL
39-
ENV LEIN_ROOT 1
36+
ENV LEIN_ROOT=1
4037

41-
# Install clojure 1.12.1 so users don't have to download it every time
42-
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.1"]])' > project.clj \
38+
# Install clojure 1.12.5 so users don't have to download it every time
39+
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.5"]])' > project.clj \
4340
&& lein deps && rm project.clj
4441

4542
COPY entrypoint /usr/local/bin/entrypoint

target/debian-bookworm-21/lein/Dockerfile

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,42 +4,39 @@ ENV JAVA_HOME=/opt/java/openjdk
44
COPY --from=eclipse-temurin:21 $JAVA_HOME $JAVA_HOME
55
ENV PATH="${JAVA_HOME}/bin:${PATH}"
66

7-
ENV LEIN_VERSION=2.12.0
7+
ENV LEIN_VERSION=2.13.0
88
ENV LEIN_INSTALL=/usr/local/bin/
99

1010
WORKDIR /tmp
1111

12-
# Download the whole repo as an archive
12+
# No standalone uberjar is published for this version, so build it from source.
13+
# Verify Leiningen's GPG-signed release tag, then bootstrap leiningen-core's
14+
# dependencies with Maven and run `lein uberjar`.
1315
RUN set -eux; \
1416
apt-get update && \
15-
apt-get install -y make gnupg wget && \
17+
apt-get install -y make maven git gnupg && \
1618
rm -rf /var/lib/apt/lists/* && \
17-
mkdir -p $LEIN_INSTALL && \
18-
wget -q https://codeberg.org/leiningen/leiningen/raw/tag/$LEIN_VERSION/bin/lein-pkg && \
19-
echo "Comparing lein-pkg checksum ..." && \
20-
sha256sum lein-pkg && \
21-
echo "12a9c5e3a2471619ca3d64a7462f920fdf713ae8959eb4fcd6257c23332b5aa4 *lein-pkg" | sha256sum -c - && \
22-
mv lein-pkg $LEIN_INSTALL/lein && \
23-
chmod 0755 $LEIN_INSTALL/lein && \
2419
export GNUPGHOME="$(mktemp -d)" && \
25-
export FILENAME_EXT=jar && \
20+
export LEIN_ROOT=1 && \
21+
mkdir -p $LEIN_INSTALL /usr/share/java /root/.lein && \
2622
gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 9D13D9426A0814B3373CF5E3D8A8243577A7859F && \
27-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
28-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
29-
echo "Verifying file PGP signature..." && \
30-
gpg --batch --verify leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
23+
git clone --depth 1 --branch $LEIN_VERSION https://codeberg.org/leiningen/leiningen.git && \
24+
cd leiningen && \
25+
git verify-tag $LEIN_VERSION && \
26+
( cd leiningen-core && mvn -B -q -DskipTests install && mvn -B -q dependency:build-classpath -Dmdep.outputFile=.lein-bootstrap ) && \
27+
bin/lein uberjar && \
28+
install -m 0644 target/leiningen-$LEIN_VERSION-standalone.jar /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
29+
install -m 0755 bin/lein-pkg $LEIN_INSTALL/lein && \
3130
gpgconf --kill all && \
32-
rm -rf "$GNUPGHOME" leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
33-
mkdir -p /usr/share/java && \
34-
mkdir -p /root/.lein && \
35-
mv leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
36-
apt-get purge -y --auto-remove gnupg wget
31+
cd /tmp && \
32+
rm -rf /tmp/leiningen /root/.m2 "$GNUPGHOME" && \
33+
apt-get purge -y --auto-remove maven git gnupg
3734

3835
ENV PATH=$PATH:$LEIN_INSTALL
39-
ENV LEIN_ROOT 1
36+
ENV LEIN_ROOT=1
4037

41-
# Install clojure 1.12.1 so users don't have to download it every time
42-
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.1"]])' > project.clj \
38+
# Install clojure 1.12.5 so users don't have to download it every time
39+
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.5"]])' > project.clj \
4340
&& lein deps && rm project.clj
4441

4542
COPY entrypoint /usr/local/bin/entrypoint

target/debian-bookworm-25/latest/Dockerfile

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,42 +6,39 @@ ENV PATH="${JAVA_HOME}/bin:${PATH}"
66

77

88
### INSTALL LEIN ###
9-
ENV LEIN_VERSION=2.12.0
9+
ENV LEIN_VERSION=2.13.0
1010
ENV LEIN_INSTALL=/usr/local/bin/
1111

1212
WORKDIR /tmp
1313

14-
# Download the whole repo as an archive
14+
# No standalone uberjar is published for this version, so build it from source.
15+
# Verify Leiningen's GPG-signed release tag, then bootstrap leiningen-core's
16+
# dependencies with Maven and run `lein uberjar`.
1517
RUN set -eux; \
1618
apt-get update && \
17-
apt-get install -y make gnupg wget && \
19+
apt-get install -y make maven git gnupg && \
1820
rm -rf /var/lib/apt/lists/* && \
19-
mkdir -p $LEIN_INSTALL && \
20-
wget -q https://codeberg.org/leiningen/leiningen/raw/tag/$LEIN_VERSION/bin/lein-pkg && \
21-
echo "Comparing lein-pkg checksum ..." && \
22-
sha256sum lein-pkg && \
23-
echo "12a9c5e3a2471619ca3d64a7462f920fdf713ae8959eb4fcd6257c23332b5aa4 *lein-pkg" | sha256sum -c - && \
24-
mv lein-pkg $LEIN_INSTALL/lein && \
25-
chmod 0755 $LEIN_INSTALL/lein && \
2621
export GNUPGHOME="$(mktemp -d)" && \
27-
export FILENAME_EXT=jar && \
22+
export LEIN_ROOT=1 && \
23+
mkdir -p $LEIN_INSTALL /usr/share/java /root/.lein && \
2824
gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys 9D13D9426A0814B3373CF5E3D8A8243577A7859F && \
29-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
30-
wget -q https://codeberg.org/leiningen/leiningen/releases/download/$LEIN_VERSION/leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
31-
echo "Verifying file PGP signature..." && \
32-
gpg --batch --verify leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT && \
25+
git clone --depth 1 --branch $LEIN_VERSION https://codeberg.org/leiningen/leiningen.git && \
26+
cd leiningen && \
27+
git verify-tag $LEIN_VERSION && \
28+
( cd leiningen-core && mvn -B -q -DskipTests install && mvn -B -q dependency:build-classpath -Dmdep.outputFile=.lein-bootstrap ) && \
29+
bin/lein uberjar && \
30+
install -m 0644 target/leiningen-$LEIN_VERSION-standalone.jar /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
31+
install -m 0755 bin/lein-pkg $LEIN_INSTALL/lein && \
3332
gpgconf --kill all && \
34-
rm -rf "$GNUPGHOME" leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT.asc && \
35-
mkdir -p /usr/share/java && \
36-
mkdir -p /root/.lein && \
37-
mv leiningen-$LEIN_VERSION-standalone.$FILENAME_EXT /usr/share/java/leiningen-$LEIN_VERSION-standalone.jar && \
38-
apt-get purge -y --auto-remove gnupg wget
33+
cd /tmp && \
34+
rm -rf /tmp/leiningen /root/.m2 "$GNUPGHOME" && \
35+
apt-get purge -y --auto-remove maven git gnupg
3936

4037
ENV PATH=$PATH:$LEIN_INSTALL
41-
ENV LEIN_ROOT 1
38+
ENV LEIN_ROOT=1
4239

43-
# Install clojure 1.12.1 so users don't have to download it every time
44-
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.1"]])' > project.clj \
40+
# Install clojure 1.12.5 so users don't have to download it every time
41+
RUN echo '(defproject dummy "" :dependencies [[org.clojure/clojure "1.12.5"]])' > project.clj \
4542
&& lein deps && rm project.clj
4643

4744
### INSTALL TOOLS-DEPS ###

0 commit comments

Comments
 (0)