aboutsummaryrefslogtreecommitdiff
path: root/src/package.lisp
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-09-16 18:23:55 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-10-23 10:51:30 -0700
commit446b8f4a8ef78cb4605cfb551255bb455be411f0 (patch)
tree0baa5401d38cc7144a750852bb7ba7aebe3d0670 /src/package.lisp
parentd8f12a2c350ad788e1c9ce532f42460273990424 (diff)
downloadconsfigurator-446b8f4a8ef78cb4605cfb551255bb455be411f0.tar.gz
install system deps by searching for package managers on PATH
With this change we handle the situation in which we don't know the OS of a host on which we need to install system packages more cleanly than before. Also rely on the new PACKAGE:INSTALLED to install the OS bootstrapper in INSTALLER:CLEANLY-INSTALLED-ONCE. This allows us to simplify usage of the property by replacing the ORIGINAL-OS argument with ORIGINAL-OS-ARCHITECTURE. Making this change does mean that we now have two ways to specify the different names a package has on different OSs: (i) something like OS:ETYPECASE where each branch applies a property which invokes an OS-specific package manager; and (ii) the plists supplied to PACKAGE:INSTALLED. Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/package.lisp')
-rw-r--r--src/package.lisp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/package.lisp b/src/package.lisp
index a32c21f..668e0d2 100644
--- a/src/package.lisp
+++ b/src/package.lisp
@@ -91,6 +91,7 @@
#:noop
#:symbol-named
#:memstring=
+ #:define-simple-error
#:plist-to-cmd-args
#:with-local-temporary-directory
#:pathname-file
@@ -443,10 +444,17 @@
#:pinned
#:no-pdiffs))
+(defpackage :consfigurator.property.package
+ (:use #:cl #:alexandria #:consfigurator)
+ (:local-nicknames (#:apt #:consfigurator.property.apt))
+ (:export #:*consfigurator-system-dependencies*
+ #:package-manager-not-found
+ #:installed))
+
(defpackage :consfigurator.connection.sbcl
(:use #:cl #:alexandria #:consfigurator)
- (:local-nicknames (#:os #:consfigurator.property.os)
- (#:apt #:consfigurator.property.apt)))
+ (:local-nicknames (#:os #:consfigurator.property.os)
+ (#:package #:consfigurator.property.package)))
(defpackage :consfigurator.property.user
(:use #:cl #:consfigurator)
@@ -466,6 +474,7 @@
(:local-nicknames (#:service #:consfigurator.property.service)
(#:apt #:consfigurator.property.apt)
(#:os #:consfigurator.property.os)
+ (#:package #:consfigurator.property.package)
(#:container #:consfigurator.property.container)
(#:mount #:consfigurator.property.mount)
(#:file #:consfigurator.property.file))