From b19716ea0274e0fec9e48508928e35ca1fd44381 Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Tue, 23 Jun 2026 23:43:45 +0000 Subject: [PATCH 1/2] fix(release): unique asset names per config variant Thread the manifest spec :name through VmLinuxBuild and ArtifactMeta so the release asset is named vmlinux- instead of vmlinux--. Two configs sharing a kernel version (e.g. x86_64-5.10 and x86_64-5.10-no-acpi -> 5.10.259) no longer collide on upload. --- src/vmlinux/gha/artifacts.clj | 20 ++++++++++---------- src/vmlinux/gha/release.clj | 4 +--- src/vmlinux/krn/build.clj | 6 +++--- 3 files changed, 14 insertions(+), 16 deletions(-) diff --git a/src/vmlinux/gha/artifacts.clj b/src/vmlinux/gha/artifacts.clj index e1a256f..1783955 100644 --- a/src/vmlinux/gha/artifacts.clj +++ b/src/vmlinux/gha/artifacts.clj @@ -5,28 +5,28 @@ [vmlinux.krn.build :as build])) (defrecord VmLinuxArtifact [artifact-name]) -(defrecord ArtifactMeta [arch version binary sha256-sum]) +(defrecord ArtifactMeta [name arch version binary sha256-sum]) (def ^:private stage-dir "out") -(defn- artifact-name - [{:keys [arch version binary-path]}] - (str (fs/file-name binary-path) "-" (name arch) "-" version)) +(defn- artifact-name [{:keys [name]}] (str "vmlinux-" name)) (defn prepare-artifact - [{:keys [arch version binary-path sha256-sum], :as vmlinux-build}] - (let [name (artifact-name vmlinux-build) - dir (str stage-dir "/" name) + [{:keys [name arch version binary-path sha256-sum], :as vmlinux-build}] + (let [art-name (artifact-name vmlinux-build) + dir (str stage-dir "/" art-name) binary (fs/file-name binary-path)] (fs/create-dirs dir) (fs/copy binary-path (str dir "/" binary) {:replace-existing true}) - (spit (str dir "/meta.edn") (pr-str (into {} (->ArtifactMeta arch version binary sha256-sum)))) - (->VmLinuxArtifact name))) + (spit (str dir "/meta.edn") + (pr-str (into {} (->ArtifactMeta name arch version binary sha256-sum)))) + (->VmLinuxArtifact art-name))) (defn load-artifact [dir] (let [am (map->ArtifactMeta (edn/read-string (slurp (str dir "/meta.edn"))))] - (build/map->VmLinuxBuild {:arch (:arch am), + (build/map->VmLinuxBuild {:name (:name am), + :arch (:arch am), :version (:version am), :binary-path (str dir "/" (:binary am)), :sha256-sum (:sha256-sum am)}))) diff --git a/src/vmlinux/gha/release.clj b/src/vmlinux/gha/release.clj index eeded7a..42a9a8c 100644 --- a/src/vmlinux/gha/release.clj +++ b/src/vmlinux/gha/release.clj @@ -14,9 +14,7 @@ "VMLinux images used within [Hyper](https://github.com/harmont-dev/hyper) built off of `{{sha}}`." {:sha sha})) -(defn- asset-name - [{:keys [arch version binary-path]}] - (str (fs/file-name binary-path) "-" (name arch) "-" version)) +(defn- asset-name [{:keys [name]}] (str "vmlinux-" name)) (defn exists? [sha] diff --git a/src/vmlinux/krn/build.clj b/src/vmlinux/krn/build.clj index 374fb47..71e7e93 100644 --- a/src/vmlinux/krn/build.clj +++ b/src/vmlinux/krn/build.clj @@ -5,7 +5,7 @@ [babashka.process :refer [shell]] [clojure.string :as str])) -(defrecord VmLinuxBuild [arch version binary-path sha256-sum]) +(defrecord VmLinuxBuild [name arch version binary-path sha256-sum]) (defn- nproc [] (.availableProcessors (Runtime/getRuntime))) @@ -21,10 +21,10 @@ :aarch64 {:kbuild-arch "arm64", :target "Image", :boot-subpath "arch/arm64/boot/Image"}}) (defn compile - [path {:keys [arch version config-file]}] + [path {:keys [name arch version config-file]}] (let [{:keys [kbuild-arch target boot-subpath]} (arch-kbuild arch)] (fs/copy (fs/absolutize config-file) (str path "/.config") {:replace-existing true}) (shell {:dir path} "make" (str "ARCH=" kbuild-arch) "olddefconfig") (shell {:dir path} "make" (str "ARCH=" kbuild-arch) (str "-j" (nproc)) target) (let [binary (str path "/" boot-subpath)] - (->VmLinuxBuild arch version binary (file-sha256 binary))))) + (->VmLinuxBuild name arch version binary (file-sha256 binary))))) From d752d094120b7a85c63fd770afa8a8e2c800496a Mon Sep 17 00:00:00 2001 From: Marko Vejnovic Date: Tue, 23 Jun 2026 23:43:45 +0000 Subject: [PATCH 2/2] build(ci): bump artifact actions to clear Node 20 warning upload-artifact v4.6.2 -> v7.0.1 (clears Node 20 deprecation warning), download-artifact v4.3.0 -> v8.0.1 (pairs with upload v7). clojure-lint-action left on its working master-pinned SHA; the v1 tag's Dockerfile (node:10-slim) no longer builds. The SHA is the real pin. --- .github/workflows/build-vmlinux.yml | 4 ++-- .github/workflows/lint.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-vmlinux.yml b/.github/workflows/build-vmlinux.yml index 8744f29..5179886 100644 --- a/.github/workflows/build-vmlinux.yml +++ b/.github/workflows/build-vmlinux.yml @@ -53,7 +53,7 @@ jobs: run: bb build "$NAME" - name: Upload build outputs - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: out-${{ matrix.name }} path: out/ @@ -70,7 +70,7 @@ jobs: babashka-version: 1.12.218 - name: Download all build outputs - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 with: pattern: out-* path: dist diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 8573938..06b7040 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-24.04 steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - - uses: DeLaGuardo/clojure-lint-action@2d6013175031096ae07bc9b90a07173029ad7dc9 # master + - uses: DeLaGuardo/clojure-lint-action@2d6013175031096ae07bc9b90a07173029ad7dc9 # master (no usable release tag; v1 Dockerfile broken) with: clj-kondo-args: --lint src check-name: clj-kondo