Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion .clj-kondo/config.edn
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,27 @@
:unused-namespace {:level :error}
:unused-referred-var {:level :error}
:unused-private-var {:level :error}
:unused-value {:level :error}
:unused-import {:level :error}
:unresolved-symbol {:level :error}
:unresolved-namespace {:level :error}
:unresolved-var {:level :error}
:type-mismatch {:level :error}
:redundant-do {:level :error}
:redundant-let {:level :error}
:redundant-fn-wrapper {:level :error}
:redundant-call {:level :error}
:missing-else-branch {:level :error}
:misplaced-docstring {:level :error}
:used-underscored-binding {:level :error}
:unsorted-required-namespaces {:level :error}
:aliased-namespace-symbol {:level :error}
:consistent-alias {:level :error}
:single-key-in {:level :error}
:refer-all {:level :error}
:duplicate-require {:level :error}
:namespace-name-mismatch {:level :error}
:non-arg-vec-return-type-hint {:level :error}
:unexpected-recur {:level :error}
:condition-always-true {:level :error}
:shadowed-var {:level :error :exclude [name runner]}}}
:shadowed-var {:level :error :exclude [name]}}}
5 changes: 4 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: Lint

on: [push, pull_request]
on:
push:
branches: [main]
pull_request:

permissions:
contents: read
Expand Down
7 changes: 4 additions & 3 deletions src/vmlinux/gha/artifacts.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
(ns vmlinux.gha.artifacts
(:require [babashka.fs :as fs]
[clojure.edn :as edn]
[vmlinux.krn.build :as build]))
(:require
[babashka.fs :as fs]
[clojure.edn :as edn]
[vmlinux.krn.build :as build]))

(defrecord VmLinuxArtifact [artifact-name])
(defrecord ArtifactMeta [arch version binary sha256-sum])
Expand Down
25 changes: 17 additions & 8 deletions src/vmlinux/gha/release.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
(ns vmlinux.gha.release
(:require [babashka.fs :as fs]
[babashka.process :refer [shell]]
[selmer.parser :as p]))
(:require
[babashka.fs :as fs]
[babashka.process :refer [shell]]
[selmer.parser :as p]))

(defn- release-tag [sha] (str "release-" sha))

Expand All @@ -23,15 +24,23 @@
:exit
zero?))

(defn- upload!
[tag asset]
(loop [attempt 1]
(let [exit (:exit (shell {:continue true} "gh" "release" "upload" tag asset))]
(cond (zero? exit) :ok
(< attempt 6) (do (Thread/sleep (* attempt 2000)) (recur (inc attempt)))
:else (throw (ex-info (str "gh release upload failed for " asset) {:asset asset}))))))

(defn create
[sha vmlinux-builds]
(assert (not (exists? sha)) (str "release already exists: " (release-tag sha)))
[sha assets]
(let [tag (release-tag sha)]
(shell "gh" "release" "create" tag "--title" (title sha) "--notes" (notes sha))
(->> vmlinux-builds
(when-not (exists? sha)
(shell "gh" "release" "create" tag "--title" (title sha) "--notes" (notes sha)))
(->> assets
(mapv (fn [build]
(future (let [asset (str (fs/parent (:binary-path build)) "/" (asset-name build))]
(fs/copy (:binary-path build) asset {:replace-existing true})
(shell "gh" "release" "upload" tag asset)))))
(upload! tag asset)))))
(run! deref))
tag))
7 changes: 4 additions & 3 deletions src/vmlinux/krn/build.clj
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
(ns vmlinux.krn.build
(:refer-clojure :exclude [compile])
(:require [babashka.fs :as fs]
[babashka.process :refer [shell]]
[clojure.string :as str]))
(:require
[babashka.fs :as fs]
[babashka.process :refer [shell]]
[clojure.string :as str]))

(defrecord VmLinuxBuild [arch version binary-path sha256-sum])

Expand Down
7 changes: 4 additions & 3 deletions src/vmlinux/krn/src.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
(ns vmlinux.krn.src
(:require [babashka.fs :as fs]
[babashka.process :refer [shell]]
[clojure.string :as str]))
(:require
[babashka.fs :as fs]
[babashka.process :refer [shell]]
[clojure.string :as str]))

(defrecord KernelSrc [tarball-url checksums-url])
(defrecord KernelTree [path checksum])
Expand Down
9 changes: 5 additions & 4 deletions src/vmlinux/tasks/compile.clj
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
(ns vmlinux.tasks.compile
(:require [manifest :as mf]
[vmlinux.gha.artifacts :as artifacts]
[vmlinux.krn.build :as kbuild]
[vmlinux.krn.src :as src]))
(:require
[manifest :as mf]
[vmlinux.gha.artifacts :as artifacts]
[vmlinux.krn.build :as kbuild]
[vmlinux.krn.src :as src]))

(defn- by-name [name] (first (filter #(= name (:name %)) mf/builds)))

Expand Down
7 changes: 4 additions & 3 deletions src/vmlinux/tasks/fmt.clj
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
(ns vmlinux.tasks.fmt
(:require [babashka.deps :as deps]
[babashka.fs :as fs]))
(:require
[babashka.deps :as deps]
[babashka.fs :as fs]))

(def ^:private opts {:width 100, :style :community})
(def ^:private opts {:width 100, :style [:community :how-to-ns]})

(defn- sources [] (map str (fs/glob "." "{src/**/*.clj,manifest.clj}")))

Expand Down
7 changes: 4 additions & 3 deletions src/vmlinux/tasks/matrix.clj
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
(ns vmlinux.tasks.matrix
(:require [cheshire.core :as json]
[manifest :as mf]))
(:require
[cheshire.core :as json]
[manifest :as mf]))

(def ^:private arch-runner {:x86_64 "ubuntu-24.04", :aarch64 "ubuntu-24.04-arm"})
(def ^:private arch-runner {:x86_64 "ultralarge-24.04-x64", :aarch64 "ultralarge-24.04-aarch64"})

(defn matrix
[]
Expand Down
7 changes: 4 additions & 3 deletions src/vmlinux/tasks/release.clj
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
(ns vmlinux.tasks.release
(:require [clojure.java.io :as io]
[vmlinux.gha.artifacts :as artifacts]
[vmlinux.gha.release :as release]))
(:require
[clojure.java.io :as io]
[vmlinux.gha.artifacts :as artifacts]
[vmlinux.gha.release :as release]))

(defn- artifact-dirs
[dir]
Expand Down