From 52b22a819faa07cbe6063cd5238196ca50c5390a Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sat, 26 Apr 2025 00:51:51 +0200 Subject: [PATCH 01/18] Check availabilty of all depedencies when building with modes requiring them --- build.nims | 40 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/build.nims b/build.nims index 31a21cd98e..d701e6a2c3 100755 --- a/build.nims +++ b/build.nims @@ -14,7 +14,7 @@ #======================================= import std/json, os -import strformat, strutils +import strformat, strutils, tables import ".config/utils/ui.nims" import ".config/utils/cli.nims" @@ -51,6 +51,19 @@ let mainFile: "src"/"arturo.nim", ) +const + dependencies = { + "gtk+-3.0": "gtk3-devel", + "webkit2gtk-4.1": "webkit2gtk4.1-devel", + "gmp": "gmp-devel", + "mpfr": "mpfr-devel", + }.toTable + + buildsWithDependencies = [ + "@full", + "@docgen", + ] + #======================================= # Types #======================================= @@ -234,6 +247,25 @@ proc installAll*(config: BuildConfig, targetFile: string) = main(config) +proc checkDependencies(logging: bool) = + var fails: seq[string] + + log "" + for dep in dependencies.keys: + if gorgeEx(fmt"pkg-config --exists {dep}").exitCode != 0: + fails.add(dep) + + if fails.len > 0: + let failText = (if fails.len == 1: "this dependency" else: "these dependencies") + warn fmt"Missing {failText}:" + for fail in fails: + log dependencies[fail] + log "" + panic "Install all packages listed above and try again", 1 + else: + if logging: + log "Dependencies successfully checked" + proc showBuildInfo*(config: BuildConfig) = let params = flags.join(" ") @@ -250,6 +282,9 @@ proc showBuildInfo*(config: BuildConfig) = if not config.silentCompilation: log fmt"flags: {params}" + if config.version in buildsWithDependencies: + checkDependencies(config.shouldLog) + #======================================= # Methods #======================================= @@ -455,6 +490,7 @@ cmd build, "[default] Build arturo and optionally install the executable": >> ["docgen"]: fullBuildConfig() docgenBuildConfig() + config.version = "@docgen" >> ["safe"]: safeBuildConfig() miniBuild() @@ -591,4 +627,4 @@ cmd benchmark, "Run benchmark suite": unless paths.global.performBenchmarks(): quit paths.local.performBenchmarks().toErrorCode -helpForMissingCommand() \ No newline at end of file +helpForMissingCommand() From 16337a3c8f01d0041a5b4aea0f94f8187bf56379 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Wed, 30 Apr 2025 21:17:32 +0200 Subject: [PATCH 02/18] Now it's OS independent and user friendly --- build.nims | 263 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 251 insertions(+), 12 deletions(-) diff --git a/build.nims b/build.nims index d701e6a2c3..a7251eefe5 100755 --- a/build.nims +++ b/build.nims @@ -13,8 +13,7 @@ # Libraries #======================================= -import std/json, os -import strformat, strutils, tables +import std/[json, os, sequtils, strformat, strutils, tables] import ".config/utils/ui.nims" import ".config/utils/cli.nims" @@ -41,6 +40,28 @@ include ".config/who.nims" # Constants #======================================= +type + PkgMan = enum + apk + apt + brew + bsd + chimera + dnf + emerge + eopkg + guix + mandriva + nix + pacman + pkg_add + pkgin + slackware + swupd + upgradepkg + xbps + zypper + let targetDir = getHomeDir()/".arturo" @@ -51,19 +72,199 @@ let mainFile: "src"/"arturo.nim", ) +# BSDs not supported yet +when defined(linux): + const + dependencies = [ + "gtk+-3.0", + "webkit2gtk-4.1", + "gmp", + "mpfr", + ] +elif defined(macosx): + const + dependencies = [ + "mpfr", + ] +elif defined(windows): + const + dependencies = [] +else: + const + dependencies = [] + +when defined(linux): + const + distros = { + "alpine" : apk, + "altlinux" : apt, + "arch" : pacman, + "archlinux" : pacman, + "arkane" : pacman, + "artix" : pacman, + "aurora" : brew, + "blackarch" : pacman, + "blendos" : pacman, + "bluefin" : brew, + "centos" : dnf, + "chimera" : chimera, + "clear-linux-os": swupd, + "debian" : apt, + "deepin" : apt, + "fedora" : dnf, + "garuda" : pacman, + "gentoo" : emerge, + "gnoppix" : pacman, + "guix" : guix, + "kaos" : pacman, + "manjaro" : pacman, + "nixos" : nix, + "nobara" : dnf, + "openmandriva" : mandriva, + "opensuse" : zypper, + "pureos" : apt, + "rhel" : dnf, + "slackware" : upgradepkg, + "solus" : eopkg, + "suse" : zypper, + "ubuntu" : apt, + "void" : xbps, + }.toTable +elif defined(bsd): + const + distros = { + "dragonfly" : bsd, + "freebsd" : bsd, + "ghostbsd" : bsd, + "netbsd" : pkgin, + "openbsd" : pkg_add, + }.toTable +elif defined(macosx): + const + distros = { + "macos" : brew, + }.toTable +else: + const + distros = Table[string, PkgMan]() const - dependencies = { - "gtk+-3.0": "gtk3-devel", - "webkit2gtk-4.1": "webkit2gtk4.1-devel", - "gmp": "gmp-devel", - "mpfr": "mpfr-devel", - }.toTable - buildsWithDependencies = [ "@full", "@docgen", ] + dependenciesNames = { + apk: { "gtk+-3.0" : "gtk+3.0-dev", + "webkit2gtk-4.1": "webkit2gtk-4.1-dev", + "gmp" : "gmp-dev", + "mpfr" : "mpfr-dev", + }.toTable, + chimera: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkitgtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + apt: { "gtk+-3.0" : "libgtk-3-dev", + "webkit2gtk-4.1": "libwebkit2gtk4.1-devel", + "gmp" : "libgmp-devel", + "mpfr" : "libmpfr-devel", + }.toTable, + brew: { "gtk+-3.0" : "gtk+3", + "webkit2gtk-4.1": "webkitgtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + dnf: { "gtk+-3.0" : "gtk3-devel", + "webkit2gtk-4.1": "webkit2gtk4.1-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + emerge: { "gtk+-3.0" : "gtk+", + "webkit2gtk-4.1": "webkit-gtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + eopkg: { "gtk+-3.0" : "libgtk-3-devel", + "webkit2gtk-4.1": "libwebkit-gtk41-devel", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + guix: { "gtk+-3.0" : "gtk+@3", + "webkit2gtk-4.1": "webkitgtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + mandriva: { "gtk+-3.0" : "lib64gtk+3.0-devel", + "webkit2gtk-4.1": "lib64webkit4.1-devel", + "gmp" : "lib64gmp-devel", + "mpfr" : "lib64mpfr-devel", + }.toTable, + nix: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkitgtk_4_1", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + pacman: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkit2gtk-4.1", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + slackware: { "gtk+-3.0" : "gtk+3[current version here].txz", + "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", + "gmp" : "gmp[current version here].txz", + "mpfr" : "mpfr[current version here].txz", + }.toTable, + swupd: { "gtk+-3.0" : "devpkg-gtk3", + "webkit2gtk-4.1": "devpkg-webkitgtk", + "gmp" : "devpkg-gmp", + "mpfr" : "devpkg-mpfr", + }.toTable, + xbps: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkit2gtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + zypper: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkit2gtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + }.toTable + + # String templates for complex installation commands + nixInstallCmd = + """ + Update configuration.nix to include: + $1 + + and for building applications targeting Arturo use: + nix-shell -p + or edit shell.nix accordingly. + """ + + installCmds = { + apk : "apk add $1", + apt : "apt-get install $1", + brew : "brew install $1", + bsd : "pkg install $1", + chimera : "apk add $1", + dnf : "dnf install $1", + emerge : "emerge install $1", + eopkg : "eopkg install $1", + guix : "guix install $1", + mandriva : "dnf install $1", + nix : nixInstallCmd, + pacman : "pacman -S $1", + pkg_add : "pkg_add $1", + pkgin : "pkgin install $1", + swupd : "swupd bundle-add $1", + upgradepkg: "upgradepkg --install-new $1", + xbps : "xbps-install $1", + zypper : "zypper install $1", + }.toTable + + #TODO OTHER = @["redox", "tinycore"] these are niche but very interesting + #======================================= # Types #======================================= @@ -247,20 +448,58 @@ proc installAll*(config: BuildConfig, targetFile: string) = main(config) +proc getDistro(): string = + if defined(linux): + var id = gorge("grep ^ID= /etc/os-release").toLower() + if id.len == 0: return "unknown" + var idLike = gorge("grep ^ID_LIKE= /etc/os-release") + var idLikes: seq[string] + if idLike.len > 0: + idLikes = idLike[8..^1].strip(chars = {'"'}).toLower().splitWhitespace() + for distro in distros.keys: + if distro in id or distro in idLikes: + return distro + return "unknown" + + if defined(bsd): + var distro = gorge("uname -s").toLower() + if distro in distros: + return distro + else: + return "unknown" + + if defined(macosx): + return "macos" + proc checkDependencies(logging: bool) = var fails: seq[string] + var os: string + + when defined(windows): return + when defined(bsd) : return log "" - for dep in dependencies.keys: + for dep in dependencies: if gorgeEx(fmt"pkg-config --exists {dep}").exitCode != 0: fails.add(dep) if fails.len > 0: - let failText = (if fails.len == 1: "this dependency" else: "these dependencies") + os = getDistro() + let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") warn fmt"Missing {failText}:" for fail in fails: - log dependencies[fail] + log fail + if os == "nixos": continue + if os != "unknown": + var cmd = installCmds[distros[os]] + log "-> " & cmd % dependenciesNames[distros[os]][fail] log "" + + if os == "nixos": + log installCmds[nix] % + (fails.map do (fail: string) -> string: + dependenciesNames[distros[os]][fail]).join("\p") + panic "Install all packages listed above and try again", 1 else: if logging: From 27a880628f9bda43d221c1b95834a9f16c7e26ab Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sat, 3 May 2025 04:09:26 +0200 Subject: [PATCH 03/18] fix missing type for windows and other dependencies --- build.nims | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build.nims b/build.nims index a7251eefe5..b284b93a29 100755 --- a/build.nims +++ b/build.nims @@ -73,7 +73,7 @@ let ) # BSDs not supported yet -when defined(linux): +when defined(windows): const dependencies = [ "gtk+-3.0", @@ -86,12 +86,12 @@ elif defined(macosx): dependencies = [ "mpfr", ] -elif defined(windows): +elif defined(linux): const - dependencies = [] + dependencies: array[0, string] = [] else: const - dependencies = [] + dependencies: array[0, string] = [] when defined(linux): const From e8d3a1a8d18b289c979c24e41b8292077d2bb4aa Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sat, 3 May 2025 04:10:55 +0200 Subject: [PATCH 04/18] fixed again lol --- build.nims | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.nims b/build.nims index b284b93a29..c5728ccb8c 100755 --- a/build.nims +++ b/build.nims @@ -73,7 +73,7 @@ let ) # BSDs not supported yet -when defined(windows): +when defined(linux): const dependencies = [ "gtk+-3.0", @@ -86,7 +86,7 @@ elif defined(macosx): dependencies = [ "mpfr", ] -elif defined(linux): +elif defined(windows): const dependencies: array[0, string] = [] else: From a156da9a3ff55f353cceefb2521ef82897263109 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sat, 3 May 2025 06:07:53 +0200 Subject: [PATCH 05/18] Fix package names and document PkgMan enum --- build.nims | 171 +++++++++++++++++++++++++++-------------------------- 1 file changed, 88 insertions(+), 83 deletions(-) diff --git a/build.nims b/build.nims index c5728ccb8c..431d917aa3 100755 --- a/build.nims +++ b/build.nims @@ -40,23 +40,24 @@ include ".config/who.nims" # Constants #======================================= +# Most of the time package names are the same among distros using +# the same package manager. The exceptions are listed as type PkgMan = enum apk apt + aptChimera brew bsd - chimera dnf + dnfMandriva emerge eopkg guix - mandriva nix pacman pkg_add pkgin - slackware swupd upgradepkg xbps @@ -107,7 +108,7 @@ when defined(linux): "blendos" : pacman, "bluefin" : brew, "centos" : dnf, - "chimera" : chimera, + "chimera" : aptChimera, "clear-linux-os": swupd, "debian" : apt, "deepin" : apt, @@ -120,7 +121,7 @@ when defined(linux): "manjaro" : pacman, "nixos" : nix, "nobara" : dnf, - "openmandriva" : mandriva, + "openmandriva" : dnfMandriva, "opensuse" : zypper, "pureos" : apt, "rhel" : dnf, @@ -130,6 +131,7 @@ when defined(linux): "ubuntu" : apt, "void" : xbps, }.toTable + elif defined(bsd): const distros = { @@ -139,14 +141,17 @@ elif defined(bsd): "netbsd" : pkgin, "openbsd" : pkg_add, }.toTable + elif defined(macosx): const distros = { "macos" : brew, }.toTable + else: const distros = Table[string, PkgMan]() + const buildsWithDependencies = [ "@full", @@ -154,80 +159,80 @@ const ] dependenciesNames = { - apk: { "gtk+-3.0" : "gtk+3.0-dev", - "webkit2gtk-4.1": "webkit2gtk-4.1-dev", - "gmp" : "gmp-dev", - "mpfr" : "mpfr-dev", + apk: { "gtk+-3.0" : "gtk+3.0-dev", + "webkit2gtk-4.1": "webkit2gtk-4.1-dev", + "gmp" : "gmp-dev", + "mpfr" : "mpfr-dev", }.toTable, - chimera: { "gtk+-3.0" : "gtk+3-devel", - "webkit2gtk-4.1": "webkitgtk-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", + apt: { "gtk+-3.0" : "libgtk-3-dev", + "webkit2gtk-4.1": "libwebkit2gtk-4.1-dev", + "gmp" : "libgmp-dev", + "mpfr" : "libmpfr-dev", }.toTable, - apt: { "gtk+-3.0" : "libgtk-3-dev", - "webkit2gtk-4.1": "libwebkit2gtk4.1-devel", - "gmp" : "libgmp-devel", - "mpfr" : "libmpfr-devel", + aptChimera: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkitgtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", }.toTable, - brew: { "gtk+-3.0" : "gtk+3", - "webkit2gtk-4.1": "webkitgtk", - "gmp" : "gmp", - "mpfr" : "mpfr", + brew: { "gtk+-3.0" : "gtk+3", + "webkit2gtk-4.1": "webkitgtk", + "gmp" : "gmp", + "mpfr" : "mpfr", }.toTable, - dnf: { "gtk+-3.0" : "gtk3-devel", - "webkit2gtk-4.1": "webkit2gtk4.1-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", + dnf: { "gtk+-3.0" : "gtk3-devel", + "webkit2gtk-4.1": "webkit2gtk4.1-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", }.toTable, - emerge: { "gtk+-3.0" : "gtk+", - "webkit2gtk-4.1": "webkit-gtk", - "gmp" : "gmp", - "mpfr" : "mpfr", + dnfMandriva:{ "gtk+-3.0" : "lib64gtk+3.0-devel", + "webkit2gtk-4.1": "lib64webkit4.1-devel", + "gmp" : "lib64gmp-devel", + "mpfr" : "lib64mpfr-devel", }.toTable, - eopkg: { "gtk+-3.0" : "libgtk-3-devel", - "webkit2gtk-4.1": "libwebkit-gtk41-devel", - "gmp" : "gmp", - "mpfr" : "mpfr", + emerge: { "gtk+-3.0" : "gtk+", + "webkit2gtk-4.1": "webkit-gtk", + "gmp" : "gmp", + "mpfr" : "mpfr", }.toTable, - guix: { "gtk+-3.0" : "gtk+@3", - "webkit2gtk-4.1": "webkitgtk", - "gmp" : "gmp", - "mpfr" : "mpfr", + eopkg: { "gtk+-3.0" : "libgtk-3-devel", + "webkit2gtk-4.1": "libwebkit-gtk41-devel", + "gmp" : "gmp", + "mpfr" : "mpfr", }.toTable, - mandriva: { "gtk+-3.0" : "lib64gtk+3.0-devel", - "webkit2gtk-4.1": "lib64webkit4.1-devel", - "gmp" : "lib64gmp-devel", - "mpfr" : "lib64mpfr-devel", + guix: { "gtk+-3.0" : "gtk+@3", + "webkit2gtk-4.1": "webkitgtk", + "gmp" : "gmp", + "mpfr" : "mpfr", }.toTable, - nix: { "gtk+-3.0" : "gtk3", - "webkit2gtk-4.1": "webkitgtk_4_1", - "gmp" : "gmp", - "mpfr" : "mpfr", + nix: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkitgtk_4_1", + "gmp" : "gmp", + "mpfr" : "mpfr", }.toTable, - pacman: { "gtk+-3.0" : "gtk3", - "webkit2gtk-4.1": "webkit2gtk-4.1", - "gmp" : "gmp", - "mpfr" : "mpfr", + pacman: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkit2gtk-4.1", + "gmp" : "gmp", + "mpfr" : "mpfr", }.toTable, - slackware: { "gtk+-3.0" : "gtk+3[current version here].txz", - "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", - "gmp" : "gmp[current version here].txz", - "mpfr" : "mpfr[current version here].txz", + slackware: { "gtk+-3.0" : "gtk+3[current version here].txz", + "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", + "gmp" : "gmp[current version here].txz", + "mpfr" : "mpfr[current version here].txz", }.toTable, - swupd: { "gtk+-3.0" : "devpkg-gtk3", - "webkit2gtk-4.1": "devpkg-webkitgtk", - "gmp" : "devpkg-gmp", - "mpfr" : "devpkg-mpfr", + swupd: { "gtk+-3.0" : "devpkg-gtk3", + "webkit2gtk-4.1": "devpkg-webkitgtk", + "gmp" : "devpkg-gmp", + "mpfr" : "devpkg-mpfr", }.toTable, - xbps: { "gtk+-3.0" : "gtk+3-devel", - "webkit2gtk-4.1": "webkit2gtk-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", + xbps: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkit2gtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", }.toTable, - zypper: { "gtk+-3.0" : "gtk+3-devel", - "webkit2gtk-4.1": "webkit2gtk-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", + zypper: { "gtk+-3.0" : "gtk3-devel", + "webkit2gtk-4.1": "webkit2gtk3-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", }.toTable, }.toTable @@ -243,24 +248,24 @@ const """ installCmds = { - apk : "apk add $1", - apt : "apt-get install $1", - brew : "brew install $1", - bsd : "pkg install $1", - chimera : "apk add $1", - dnf : "dnf install $1", - emerge : "emerge install $1", - eopkg : "eopkg install $1", - guix : "guix install $1", - mandriva : "dnf install $1", - nix : nixInstallCmd, - pacman : "pacman -S $1", - pkg_add : "pkg_add $1", - pkgin : "pkgin install $1", - swupd : "swupd bundle-add $1", - upgradepkg: "upgradepkg --install-new $1", - xbps : "xbps-install $1", - zypper : "zypper install $1", + apk : "apk add $1", + apt : "apt-get install $1", + brew : "brew install $1", + bsd : "pkg install $1", + aptChimera : "apk add $1", + dnf : "dnf install $1", + dnfMandriva: "dnf install $1", + emerge : "emerge install $1", + eopkg : "eopkg install $1", + guix : "guix install $1", + nix : nixInstallCmd, + pacman : "pacman -S $1", + pkg_add : "pkg_add $1", + pkgin : "pkgin install $1", + swupd : "swupd bundle-add $1", + upgradepkg : "upgradepkg --install-new $1", + xbps : "xbps-install $1", + zypper : "zypper install $1", }.toTable #TODO OTHER = @["redox", "tinycore"] these are niche but very interesting From b141c5f64ab85603cee5c3bbec094279fbad2f4a Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sat, 3 May 2025 06:14:31 +0200 Subject: [PATCH 06/18] Rename slackware --- build.nims | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.nims b/build.nims index 431d917aa3..29c1a4e3bc 100755 --- a/build.nims +++ b/build.nims @@ -214,7 +214,7 @@ const "gmp" : "gmp", "mpfr" : "mpfr", }.toTable, - slackware: { "gtk+-3.0" : "gtk+3[current version here].txz", + upgradepkg: { "gtk+-3.0" : "gtk+3[current version here].txz", "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", "gmp" : "gmp[current version here].txz", "mpfr" : "mpfr[current version here].txz", From 1c239d4b874e097fdef4b70d435388b64e8c20ab Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sat, 3 May 2025 19:00:05 +0200 Subject: [PATCH 07/18] Applied changes asked in review --- build.nims | 278 +------------------------------------------ dependencies.nims | 294 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 296 insertions(+), 276 deletions(-) create mode 100644 dependencies.nims diff --git a/build.nims b/build.nims index 29c1a4e3bc..cc76c862d8 100755 --- a/build.nims +++ b/build.nims @@ -13,10 +13,11 @@ # Libraries #======================================= -import std/[json, os, sequtils, strformat, strutils, tables] +import std/[json, os, strformat, strutils] import ".config/utils/ui.nims" import ".config/utils/cli.nims" +import "dependencies.nims" #======================================= # Initialize globals @@ -40,29 +41,6 @@ include ".config/who.nims" # Constants #======================================= -# Most of the time package names are the same among distros using -# the same package manager. The exceptions are listed as -type - PkgMan = enum - apk - apt - aptChimera - brew - bsd - dnf - dnfMandriva - emerge - eopkg - guix - nix - pacman - pkg_add - pkgin - swupd - upgradepkg - xbps - zypper - let targetDir = getHomeDir()/".arturo" @@ -73,202 +51,6 @@ let mainFile: "src"/"arturo.nim", ) -# BSDs not supported yet -when defined(linux): - const - dependencies = [ - "gtk+-3.0", - "webkit2gtk-4.1", - "gmp", - "mpfr", - ] -elif defined(macosx): - const - dependencies = [ - "mpfr", - ] -elif defined(windows): - const - dependencies: array[0, string] = [] -else: - const - dependencies: array[0, string] = [] - -when defined(linux): - const - distros = { - "alpine" : apk, - "altlinux" : apt, - "arch" : pacman, - "archlinux" : pacman, - "arkane" : pacman, - "artix" : pacman, - "aurora" : brew, - "blackarch" : pacman, - "blendos" : pacman, - "bluefin" : brew, - "centos" : dnf, - "chimera" : aptChimera, - "clear-linux-os": swupd, - "debian" : apt, - "deepin" : apt, - "fedora" : dnf, - "garuda" : pacman, - "gentoo" : emerge, - "gnoppix" : pacman, - "guix" : guix, - "kaos" : pacman, - "manjaro" : pacman, - "nixos" : nix, - "nobara" : dnf, - "openmandriva" : dnfMandriva, - "opensuse" : zypper, - "pureos" : apt, - "rhel" : dnf, - "slackware" : upgradepkg, - "solus" : eopkg, - "suse" : zypper, - "ubuntu" : apt, - "void" : xbps, - }.toTable - -elif defined(bsd): - const - distros = { - "dragonfly" : bsd, - "freebsd" : bsd, - "ghostbsd" : bsd, - "netbsd" : pkgin, - "openbsd" : pkg_add, - }.toTable - -elif defined(macosx): - const - distros = { - "macos" : brew, - }.toTable - -else: - const - distros = Table[string, PkgMan]() - -const - buildsWithDependencies = [ - "@full", - "@docgen", - ] - - dependenciesNames = { - apk: { "gtk+-3.0" : "gtk+3.0-dev", - "webkit2gtk-4.1": "webkit2gtk-4.1-dev", - "gmp" : "gmp-dev", - "mpfr" : "mpfr-dev", - }.toTable, - apt: { "gtk+-3.0" : "libgtk-3-dev", - "webkit2gtk-4.1": "libwebkit2gtk-4.1-dev", - "gmp" : "libgmp-dev", - "mpfr" : "libmpfr-dev", - }.toTable, - aptChimera: { "gtk+-3.0" : "gtk+3-devel", - "webkit2gtk-4.1": "webkitgtk-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", - }.toTable, - brew: { "gtk+-3.0" : "gtk+3", - "webkit2gtk-4.1": "webkitgtk", - "gmp" : "gmp", - "mpfr" : "mpfr", - }.toTable, - dnf: { "gtk+-3.0" : "gtk3-devel", - "webkit2gtk-4.1": "webkit2gtk4.1-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", - }.toTable, - dnfMandriva:{ "gtk+-3.0" : "lib64gtk+3.0-devel", - "webkit2gtk-4.1": "lib64webkit4.1-devel", - "gmp" : "lib64gmp-devel", - "mpfr" : "lib64mpfr-devel", - }.toTable, - emerge: { "gtk+-3.0" : "gtk+", - "webkit2gtk-4.1": "webkit-gtk", - "gmp" : "gmp", - "mpfr" : "mpfr", - }.toTable, - eopkg: { "gtk+-3.0" : "libgtk-3-devel", - "webkit2gtk-4.1": "libwebkit-gtk41-devel", - "gmp" : "gmp", - "mpfr" : "mpfr", - }.toTable, - guix: { "gtk+-3.0" : "gtk+@3", - "webkit2gtk-4.1": "webkitgtk", - "gmp" : "gmp", - "mpfr" : "mpfr", - }.toTable, - nix: { "gtk+-3.0" : "gtk3", - "webkit2gtk-4.1": "webkitgtk_4_1", - "gmp" : "gmp", - "mpfr" : "mpfr", - }.toTable, - pacman: { "gtk+-3.0" : "gtk3", - "webkit2gtk-4.1": "webkit2gtk-4.1", - "gmp" : "gmp", - "mpfr" : "mpfr", - }.toTable, - upgradepkg: { "gtk+-3.0" : "gtk+3[current version here].txz", - "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", - "gmp" : "gmp[current version here].txz", - "mpfr" : "mpfr[current version here].txz", - }.toTable, - swupd: { "gtk+-3.0" : "devpkg-gtk3", - "webkit2gtk-4.1": "devpkg-webkitgtk", - "gmp" : "devpkg-gmp", - "mpfr" : "devpkg-mpfr", - }.toTable, - xbps: { "gtk+-3.0" : "gtk+3-devel", - "webkit2gtk-4.1": "webkit2gtk-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", - }.toTable, - zypper: { "gtk+-3.0" : "gtk3-devel", - "webkit2gtk-4.1": "webkit2gtk3-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", - }.toTable, - }.toTable - - # String templates for complex installation commands - nixInstallCmd = - """ - Update configuration.nix to include: - $1 - - and for building applications targeting Arturo use: - nix-shell -p - or edit shell.nix accordingly. - """ - - installCmds = { - apk : "apk add $1", - apt : "apt-get install $1", - brew : "brew install $1", - bsd : "pkg install $1", - aptChimera : "apk add $1", - dnf : "dnf install $1", - dnfMandriva: "dnf install $1", - emerge : "emerge install $1", - eopkg : "eopkg install $1", - guix : "guix install $1", - nix : nixInstallCmd, - pacman : "pacman -S $1", - pkg_add : "pkg_add $1", - pkgin : "pkgin install $1", - swupd : "swupd bundle-add $1", - upgradepkg : "upgradepkg --install-new $1", - xbps : "xbps-install $1", - zypper : "zypper install $1", - }.toTable - - #TODO OTHER = @["redox", "tinycore"] these are niche but very interesting #======================================= # Types @@ -453,62 +235,6 @@ proc installAll*(config: BuildConfig, targetFile: string) = main(config) -proc getDistro(): string = - if defined(linux): - var id = gorge("grep ^ID= /etc/os-release").toLower() - if id.len == 0: return "unknown" - var idLike = gorge("grep ^ID_LIKE= /etc/os-release") - var idLikes: seq[string] - if idLike.len > 0: - idLikes = idLike[8..^1].strip(chars = {'"'}).toLower().splitWhitespace() - for distro in distros.keys: - if distro in id or distro in idLikes: - return distro - return "unknown" - - if defined(bsd): - var distro = gorge("uname -s").toLower() - if distro in distros: - return distro - else: - return "unknown" - - if defined(macosx): - return "macos" - -proc checkDependencies(logging: bool) = - var fails: seq[string] - var os: string - - when defined(windows): return - when defined(bsd) : return - - log "" - for dep in dependencies: - if gorgeEx(fmt"pkg-config --exists {dep}").exitCode != 0: - fails.add(dep) - - if fails.len > 0: - os = getDistro() - let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") - warn fmt"Missing {failText}:" - for fail in fails: - log fail - if os == "nixos": continue - if os != "unknown": - var cmd = installCmds[distros[os]] - log "-> " & cmd % dependenciesNames[distros[os]][fail] - log "" - - if os == "nixos": - log installCmds[nix] % - (fails.map do (fail: string) -> string: - dependenciesNames[distros[os]][fail]).join("\p") - - panic "Install all packages listed above and try again", 1 - else: - if logging: - log "Dependencies successfully checked" proc showBuildInfo*(config: BuildConfig) = let diff --git a/dependencies.nims b/dependencies.nims new file mode 100644 index 0000000000..415ce8b292 --- /dev/null +++ b/dependencies.nims @@ -0,0 +1,294 @@ +import std/[sequtils, strformat, strutils, tables] + +import ".config/utils/ui.nims" + +# Most of the time package names are the same among distros using +# the same package manager. The exceptions are listed as +type + PkgMan = enum + apk + apt + aptChimera + brew + bsd + dnf + dnfMandriva + emerge + eopkg + guix + nix + pacman + pkg_add + pkgin + swupd + upgradepkg + xbps + zypper + +# BSDs not supported yet +when defined(linux): + const + dependencies = [ + "gtk+-3.0", + "webkit2gtk-4.1", + "gmp", + "mpfr", + ] +elif defined(macosx): + const + dependencies = [ + "mpfr", + ] +elif defined(windows): + const + dependencies: array[0, string] = [] +else: + const + dependencies: array[0, string] = [] + +when defined(linux): + const + distros = { + "alpine" : apk, + "altlinux" : apt, + "arch" : pacman, + "archlinux" : pacman, + "arkane" : pacman, + "artix" : pacman, + "aurora" : brew, + "blackarch" : pacman, + "blendos" : pacman, + "bluefin" : brew, + "centos" : dnf, + "chimera" : aptChimera, + "clear-linux-os": swupd, + "debian" : apt, + "deepin" : apt, + "fedora" : dnf, + "garuda" : pacman, + "gentoo" : emerge, + "gnoppix" : pacman, + "guix" : guix, + "kaos" : pacman, + "manjaro" : pacman, + "nixos" : nix, + "nobara" : dnf, + "openmandriva" : dnfMandriva, + "opensuse" : zypper, + "pureos" : apt, + "rhel" : dnf, + "slackware" : upgradepkg, + "solus" : eopkg, + "suse" : zypper, + "ubuntu" : apt, + "void" : xbps, + }.toTable + +elif defined(bsd): + const + distros = { + "dragonfly" : bsd, + "freebsd" : bsd, + "ghostbsd" : bsd, + "netbsd" : pkgin, + "openbsd" : pkg_add, + }.toTable + +elif defined(macosx): + const + distros = { + "macos" : brew, + }.toTable + +else: + const + distros = Table[string, PkgMan]() + +const + buildsWithDependencies* = [ + "@full", + "@docgen", + ] + + dependenciesNames = { + apk: { "gtk+-3.0" : "gtk+3.0-dev", + "webkit2gtk-4.1": "webkit2gtk-4.1-dev", + "gmp" : "gmp-dev", + "mpfr" : "mpfr-dev", + }.toTable, + apt: { "gtk+-3.0" : "libgtk-3-dev", + "webkit2gtk-4.1": "libwebkit2gtk-4.1-dev", + "gmp" : "libgmp-dev", + "mpfr" : "libmpfr-dev", + }.toTable, + aptChimera: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkitgtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + brew: { "gtk+-3.0" : "gtk+3", + "webkit2gtk-4.1": "webkitgtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + bsd: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkit2-gtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + dnf: { "gtk+-3.0" : "gtk3-devel", + "webkit2gtk-4.1": "webkit2gtk4.1-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + dnfMandriva:{ "gtk+-3.0" : "lib64gtk+3.0-devel", + "webkit2gtk-4.1": "lib64webkit4.1-devel", + "gmp" : "lib64gmp-devel", + "mpfr" : "lib64mpfr-devel", + }.toTable, + emerge: { "gtk+-3.0" : "gtk+", + "webkit2gtk-4.1": "webkit-gtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + eopkg: { "gtk+-3.0" : "libgtk-3-devel", + "webkit2gtk-4.1": "libwebkit-gtk41-devel", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + guix: { "gtk+-3.0" : "gtk+@3", + "webkit2gtk-4.1": "webkitgtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + nix: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkitgtk_4_1", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + pacman: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkit2gtk-4.1", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + pkg_add: { "gtk+-3.0" : "gtk+3", + "webkit2gtk-4.1": "webkitgtk41", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + pkgin: { "gtk+-3.0" : "gtk3", + "webkit2gtk-4.1": "webkit-gtk", + "gmp" : "gmp", + "mpfr" : "mpfr", + }.toTable, + upgradepkg: { "gtk+-3.0" : "gtk+3[current version here].txz", + "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", + "gmp" : "gmp[current version here].txz", + "mpfr" : "mpfr[current version here].txz", + }.toTable, + swupd: { "gtk+-3.0" : "devpkg-gtk3", + "webkit2gtk-4.1": "devpkg-webkitgtk", + "gmp" : "devpkg-gmp", + "mpfr" : "devpkg-mpfr", + }.toTable, + xbps: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkit2gtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + zypper: { "gtk+-3.0" : "gtk3-devel", + "webkit2gtk-4.1": "webkit2gtk3-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, + }.toTable + + # String templates for complex installation commands + nixInstallCmd = + """ + Update configuration.nix to include: + $1 + + and for building applications targeting Arturo use: + nix-shell -p + or edit shell.nix accordingly. + """ + + installCmds = { + apk : "apk add $1", + apt : "apt-get install $1", + brew : "brew install $1", + bsd : "pkg install $1", + aptChimera : "apk add $1", + dnf : "dnf install $1", + dnfMandriva: "dnf install $1", + emerge : "emerge install $1", + eopkg : "eopkg install $1", + guix : "guix install $1", + nix : nixInstallCmd, + pacman : "pacman -S $1", + pkg_add : "pkg_add $1", + pkgin : "pkgin install $1", + swupd : "swupd bundle-add $1", + upgradepkg : "upgradepkg --install-new $1", + xbps : "xbps-install $1", + zypper : "zypper install $1", + }.toTable + + #TODO OTHER = @["redox", "tinycore"] these are niche but very interesting + +proc getDistro(): string = + if defined(linux): + var id = gorge("grep ^ID= /etc/os-release").toLower() + if id.len == 0: return "unknown" + var idLike = gorge("grep ^ID_LIKE= /etc/os-release") + var idLikes: seq[string] + if idLike.len > 0: + idLikes = idLike[8..^1].strip(chars = {'"'}).toLower().splitWhitespace() + for distro in distros.keys: + if distro in id or distro in idLikes: + return distro + return "unknown" + + if defined(bsd): + var distro = gorge("uname -s").toLower() + if distro in distros: + return distro + else: + return "unknown" + + if defined(macosx): + return "macos" + +proc checkDependencies*(logging: bool) = + var fails: seq[string] + var os: string + + when defined(windows): return + when defined(bsd) : return + + log "" + for dep in dependencies: + if gorgeEx(fmt"pkg-config --exists {dep}").exitCode != 0: + fails.add(dep) + if fails.len > 0: + os = getDistro() + let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") + warn fmt"Missing {failText}:" + for fail in fails: + log fail + if os == "nixos": continue + if os != "unknown": + var cmd = installCmds[distros[os]] + log "-> " & cmd % dependenciesNames[distros[os]][fail] + log "" + + if os == "nixos": + log installCmds[nix] % + (fails.map do (fail: string) -> string: + dependenciesNames[distros[os]][fail]).join("\p") + + panic "Install all packages listed above and try again", 1 + else: + if logging: + log "Dependencies successfully checked" From fe87b591aa05c336ef5e16fd5381a82060435baf Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sun, 4 May 2025 05:44:14 +0200 Subject: [PATCH 08/18] apkChimera typo fix --- dependencies.nims | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index 415ce8b292..f33ba645aa 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -7,8 +7,8 @@ import ".config/utils/ui.nims" type PkgMan = enum apk + apkChimera apt - aptChimera brew bsd dnf @@ -60,7 +60,7 @@ when defined(linux): "blendos" : pacman, "bluefin" : brew, "centos" : dnf, - "chimera" : aptChimera, + "chimera" : apkChimera, "clear-linux-os": swupd, "debian" : apt, "deepin" : apt, @@ -116,16 +116,16 @@ const "gmp" : "gmp-dev", "mpfr" : "mpfr-dev", }.toTable, + apkChimera: { "gtk+-3.0" : "gtk+3-devel", + "webkit2gtk-4.1": "webkitgtk-devel", + "gmp" : "gmp-devel", + "mpfr" : "mpfr-devel", + }.toTable, apt: { "gtk+-3.0" : "libgtk-3-dev", "webkit2gtk-4.1": "libwebkit2gtk-4.1-dev", "gmp" : "libgmp-dev", "mpfr" : "libmpfr-dev", }.toTable, - aptChimera: { "gtk+-3.0" : "gtk+3-devel", - "webkit2gtk-4.1": "webkitgtk-devel", - "gmp" : "gmp-devel", - "mpfr" : "mpfr-devel", - }.toTable, brew: { "gtk+-3.0" : "gtk+3", "webkit2gtk-4.1": "webkitgtk", "gmp" : "gmp", From af8d1a8ec20c67d96ca624d0e3b6479c2d7843c9 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Sun, 4 May 2025 06:07:42 +0200 Subject: [PATCH 09/18] typo again`: --- dependencies.nims | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.nims b/dependencies.nims index f33ba645aa..6286a2bc3e 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -219,7 +219,7 @@ const apt : "apt-get install $1", brew : "brew install $1", bsd : "pkg install $1", - aptChimera : "apk add $1", + apkChimera : "apk add $1", dnf : "dnf install $1", dnfMandriva: "dnf install $1", emerge : "emerge install $1", From 34953fcc081b93ee780751956e6f5a00bb2169d1 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 21:32:39 +0200 Subject: [PATCH 10/18] styling --- dependencies.nims | 1 + 1 file changed, 1 insertion(+) diff --git a/dependencies.nims b/dependencies.nims index 6286a2bc3e..ba967f3aca 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -243,6 +243,7 @@ proc getDistro(): string = if id.len == 0: return "unknown" var idLike = gorge("grep ^ID_LIKE= /etc/os-release") var idLikes: seq[string] + if idLike.len > 0: idLikes = idLike[8..^1].strip(chars = {'"'}).toLower().splitWhitespace() for distro in distros.keys: From 095b02b967f832abfbb8a38dbc027c85e14622e8 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 21:35:59 +0200 Subject: [PATCH 11/18] styling --- dependencies.nims | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index ba967f3aca..9f20ee35d2 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -181,10 +181,10 @@ const "gmp" : "gmp", "mpfr" : "mpfr", }.toTable, - upgradepkg: { "gtk+-3.0" : "gtk+3[current version here].txz", - "webkit2gtk-4.1": "webkit2gtk4.1[current version here].txz", - "gmp" : "gmp[current version here].txz", - "mpfr" : "mpfr[current version here].txz", + upgradepkg: { "gtk+-3.0" : "gtk+3.txz", + "webkit2gtk-4.1": "webkit2gtk4.1.txz", + "gmp" : "gmp.txz", + "mpfr" : "mpfr.txz", }.toTable, swupd: { "gtk+-3.0" : "devpkg-gtk3", "webkit2gtk-4.1": "devpkg-webkitgtk", From a23c0294852a859ce41ccbbd0a8ac21f88698652 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 22:07:42 +0200 Subject: [PATCH 12/18] testing CI fail --- dependencies.nims | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index 9f20ee35d2..7a17983912 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -1,6 +1,6 @@ import std/[sequtils, strformat, strutils, tables] -import ".config/utils/ui.nims" +#import ".config/utils/ui.nims" # Most of the time package names are the same among distros using # the same package manager. The exceptions are listed as @@ -268,28 +268,28 @@ proc checkDependencies*(logging: bool) = when defined(windows): return when defined(bsd) : return - log "" + echo "" for dep in dependencies: if gorgeEx(fmt"pkg-config --exists {dep}").exitCode != 0: fails.add(dep) if fails.len > 0: os = getDistro() let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") - warn fmt"Missing {failText}:" + echo fmt"Missing {failText}:" for fail in fails: - log fail + echo fail if os == "nixos": continue if os != "unknown": var cmd = installCmds[distros[os]] - log "-> " & cmd % dependenciesNames[distros[os]][fail] - log "" + echo "-> " & cmd % dependenciesNames[distros[os]][fail] + echo "" if os == "nixos": - log installCmds[nix] % + echo installCmds[nix] % (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") - panic "Install all packages listed above and try again", 1 + echo "Install all packages listed above and try again", 1 else: if logging: - log "Dependencies successfully checked" + echo "Dependencies successfully checked" From fffbebb5941dd6396b2185e5e5ef0198df27f91c Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 22:24:52 +0200 Subject: [PATCH 13/18] testing CI fail 2 --- dependencies.nims | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index 7a17983912..f78139f9f0 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -1,6 +1,6 @@ import std/[sequtils, strformat, strutils, tables] -#import ".config/utils/ui.nims" +import ".config/utils/ui.nims" # Most of the time package names are the same among distros using # the same package manager. The exceptions are listed as @@ -275,21 +275,21 @@ proc checkDependencies*(logging: bool) = if fails.len > 0: os = getDistro() let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") - echo fmt"Missing {failText}:" + warn fmt"Missing {failText}:" for fail in fails: - echo fail + log fail if os == "nixos": continue if os != "unknown": var cmd = installCmds[distros[os]] - echo "-> " & cmd % dependenciesNames[distros[os]][fail] + log "-> " & cmd % dependenciesNames[distros[os]][fail] echo "" if os == "nixos": - echo installCmds[nix] % + log installCmds[nix] % (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") - echo "Install all packages listed above and try again", 1 + panic "Install all packages listed above and try again", 1 else: if logging: - echo "Dependencies successfully checked" + log "Dependencies successfully checked" From 39f57ecdebc66fff7a7700964e585cb27d17b3b3 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 22:28:25 +0200 Subject: [PATCH 14/18] testing CI fail 3 --- dependencies.nims | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index f78139f9f0..455700169e 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -275,21 +275,21 @@ proc checkDependencies*(logging: bool) = if fails.len > 0: os = getDistro() let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") - warn fmt"Missing {failText}:" + echo fmt"Missing {failText}:" for fail in fails: - log fail + echo fail if os == "nixos": continue if os != "unknown": var cmd = installCmds[distros[os]] - log "-> " & cmd % dependenciesNames[distros[os]][fail] + echo "-> " & cmd % dependenciesNames[distros[os]][fail] echo "" if os == "nixos": - log installCmds[nix] % + echo installCmds[nix] % (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") - panic "Install all packages listed above and try again", 1 + echo "Install all packages listed above and try again", 1 else: if logging: - log "Dependencies successfully checked" + echo "Dependencies successfully checked" From 0c6f001dc2fb62bbb396a32bbec9b2b2370e3438 Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 22:37:41 +0200 Subject: [PATCH 15/18] testing CI fail 4 --- dependencies.nims | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index 455700169e..66ac40f063 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -275,7 +275,7 @@ proc checkDependencies*(logging: bool) = if fails.len > 0: os = getDistro() let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") - echo fmt"Missing {failText}:" + warn fmt"Missing {failText}:" for fail in fails: echo fail if os == "nixos": continue @@ -289,7 +289,7 @@ proc checkDependencies*(logging: bool) = (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") - echo "Install all packages listed above and try again", 1 + panic "Install all packages listed above and try again", 1 else: if logging: echo "Dependencies successfully checked" From dc919fc53a77ba2346c5064fca859ceca5ad9fab Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 22:56:26 +0200 Subject: [PATCH 16/18] testing CI fail 5 --- dependencies.nims | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.nims b/dependencies.nims index 66ac40f063..523a5d3023 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -289,7 +289,7 @@ proc checkDependencies*(logging: bool) = (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") - panic "Install all packages listed above and try again", 1 + echo "Install all packages listed above and try again", 1 else: if logging: echo "Dependencies successfully checked" From e79faed22fdb296babe70414f0152bbd18061abf Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 23:00:51 +0200 Subject: [PATCH 17/18] testing CI fail 6 --- dependencies.nims | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/dependencies.nims b/dependencies.nims index 523a5d3023..4aa531e936 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -268,7 +268,7 @@ proc checkDependencies*(logging: bool) = when defined(windows): return when defined(bsd) : return - echo "" + log "" for dep in dependencies: if gorgeEx(fmt"pkg-config --exists {dep}").exitCode != 0: fails.add(dep) @@ -277,19 +277,19 @@ proc checkDependencies*(logging: bool) = let failText = (if fails.len == 1: "this dependency" else: fmt"these {fails.len} dependencies") warn fmt"Missing {failText}:" for fail in fails: - echo fail + log fail if os == "nixos": continue if os != "unknown": var cmd = installCmds[distros[os]] - echo "-> " & cmd % dependenciesNames[distros[os]][fail] - echo "" + log "-> " & cmd % dependenciesNames[distros[os]][fail] + log "" if os == "nixos": - echo installCmds[nix] % + log installCmds[nix] % (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") echo "Install all packages listed above and try again", 1 else: if logging: - echo "Dependencies successfully checked" + log "Dependencies successfully checked" From 60261a5cd9eb0195596934334c5dd39f44bd917a Mon Sep 17 00:00:00 2001 From: deepestsound Date: Tue, 6 May 2025 23:22:00 +0200 Subject: [PATCH 18/18] testing CI fail 7 LAST ONE?? --- dependencies.nims | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.nims b/dependencies.nims index 4aa531e936..b82c82e116 100644 --- a/dependencies.nims +++ b/dependencies.nims @@ -289,7 +289,7 @@ proc checkDependencies*(logging: bool) = (fails.map do (fail: string) -> string: dependenciesNames[distros[os]][fail]).join("\p") - echo "Install all packages listed above and try again", 1 + panic "Install all packages listed above and try again" else: if logging: log "Dependencies successfully checked"