From 7d590225af9b44339b435ff4c05f6520a2f79767 Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 20:50:12 +0100 Subject: [PATCH 1/8] introduce Clear Linux OS in explorers Note: there is no LSB on Clear Linux, but the latter part (`rc_getvar /usr/lib/os-release VERSION_ID`) does work. --- cdist/conf/explorer/os_version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/conf/explorer/os_version b/cdist/conf/explorer/os_version index fc59fd14..9d272dae 100755 --- a/cdist/conf/explorer/os_version +++ b/cdist/conf/explorer/os_version @@ -138,7 +138,7 @@ in cat /etc/SuSE-release fi ;; - ubuntu) + clear-linux-os|ubuntu) if command -v lsb_release >/dev/null 2>&1 then lsb_release -sr -- 2.40.1 From d1ae8942da10fce06121a23127e4ca8694d117d7 Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 18:02:53 +0100 Subject: [PATCH 2/8] introduce swupd package manager --- .../conf/type/__package_swupd/explorer/state | 29 ++++++++ .../conf/type/__package_swupd/gencode-remote | 50 ++++++++++++++ cdist/conf/type/__package_swupd/man.rst | 66 +++++++++++++++++++ cdist/conf/type/__package_swupd/nonparallel | 0 .../type/__package_swupd/parameter/boolean | 1 + .../__package_swupd/parameter/default/state | 1 + .../type/__package_swupd/parameter/optional | 2 + 7 files changed, 149 insertions(+) create mode 100644 cdist/conf/type/__package_swupd/explorer/state create mode 100755 cdist/conf/type/__package_swupd/gencode-remote create mode 100644 cdist/conf/type/__package_swupd/man.rst create mode 100644 cdist/conf/type/__package_swupd/nonparallel create mode 100644 cdist/conf/type/__package_swupd/parameter/boolean create mode 100644 cdist/conf/type/__package_swupd/parameter/default/state create mode 100644 cdist/conf/type/__package_swupd/parameter/optional diff --git a/cdist/conf/type/__package_swupd/explorer/state b/cdist/conf/type/__package_swupd/explorer/state new file mode 100644 index 00000000..598da85a --- /dev/null +++ b/cdist/conf/type/__package_swupd/explorer/state @@ -0,0 +1,29 @@ +#!/bin/sh -e +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Retrieve the status of a package on Clear Linux OS +# + +if [ -f "$__object/parameter/name" ] +then name="$(cat "$__object/parameter/name")" +else name="$__object_id" +fi + +if swupd bundle-list --status --quiet | grep -q "^${name}: .*installed" +then echo present +else echo absent +fi diff --git a/cdist/conf/type/__package_swupd/gencode-remote b/cdist/conf/type/__package_swupd/gencode-remote new file mode 100755 index 00000000..a74ac671 --- /dev/null +++ b/cdist/conf/type/__package_swupd/gencode-remote @@ -0,0 +1,50 @@ +#!/bin/sh -e +# This file is part of cdist. +# +# cdist is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# cdist is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with cdist. If not, see . +# +# +# Manage packages on Clear Linux OS +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +state_should="$(cat "$__object/parameter/state")" +state_is="$(cat "$__object/explorer/state")" + +# Nothing to be done +[ "$state_is" = "$state_should" ] && exit 0 + +case "$state_should" in + present) + if [ -f "$__object/parameter/install-optional" ] + then swupd_opts="" + else swupd_opts="--skip-optional" + fi + echo "swupd bundle-add $swupd_opts -y --quiet '$name'" + echo "installed" >> "$__messages_out" + ;; + absent) + echo "swupd bundle-remove '$name'" + echo "removed" >> "$__messages_out" + ;; + *) + echo "Unknown state: $state_should" >&2 + exit 1 + ;; +esac diff --git a/cdist/conf/type/__package_swupd/man.rst b/cdist/conf/type/__package_swupd/man.rst new file mode 100644 index 00000000..ae11b130 --- /dev/null +++ b/cdist/conf/type/__package_swupd/man.rst @@ -0,0 +1,66 @@ +cdist-type__package_swupd(7) +============================ + +NAME +---- +cdist-type__package_swupd - Manage packages with swupd + + +DESCRIPTION +----------- +swupd (software update program) is the package manager used on Clear Linux OS to +manage packages. The package will be installed without optional +packages. If such packages are required, install them +separately or use the parameter ``--install-optional``. + + +REQUIRED PARAMETERS +------------------- +None + + +OPTIONAL PARAMETERS +------------------- +name + If supplied, use the name and not the object id as the package name. + +state + Either "present" or "absent", defaults to "present" + + +BOOLEAN PARAMETERS +------------------ +install-optional + If the package will be installed, it also installs optional packages + with it. It will not install optional packages if the original package + is already installed. + + +EXAMPLES +-------- + +.. code-block:: sh + + # Ensure zsh in installed + __package_swupd zsh --state present + + # Remove package + __package_swupd zsh --state absent + + +SEE ALSO +-------- +:strong:`cdist-type__package`\ (7) + + +AUTHORS +------- +Romain Dartigues + + +COPYING +------- +Copyright \(C) 2024 Romain Dartigues. You can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation, either version 3 of the +License, or (at your option) any later version. diff --git a/cdist/conf/type/__package_swupd/nonparallel b/cdist/conf/type/__package_swupd/nonparallel new file mode 100644 index 00000000..e69de29b diff --git a/cdist/conf/type/__package_swupd/parameter/boolean b/cdist/conf/type/__package_swupd/parameter/boolean new file mode 100644 index 00000000..9bb00783 --- /dev/null +++ b/cdist/conf/type/__package_swupd/parameter/boolean @@ -0,0 +1 @@ +install-optional \ No newline at end of file diff --git a/cdist/conf/type/__package_swupd/parameter/default/state b/cdist/conf/type/__package_swupd/parameter/default/state new file mode 100644 index 00000000..e7f6134f --- /dev/null +++ b/cdist/conf/type/__package_swupd/parameter/default/state @@ -0,0 +1 @@ +present diff --git a/cdist/conf/type/__package_swupd/parameter/optional b/cdist/conf/type/__package_swupd/parameter/optional new file mode 100644 index 00000000..1b423dc4 --- /dev/null +++ b/cdist/conf/type/__package_swupd/parameter/optional @@ -0,0 +1,2 @@ +name +state -- 2.40.1 From 88bb5612883fa89e65b6a752541a879f754e768d Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 17:53:12 +0100 Subject: [PATCH 3/8] introduce Clear Linux OS to the __package type --- cdist/conf/type/__package/manifest | 1 + 1 file changed, 1 insertion(+) diff --git a/cdist/conf/type/__package/manifest b/cdist/conf/type/__package/manifest index a453c32b..044a5476 100755 --- a/cdist/conf/type/__package/manifest +++ b/cdist/conf/type/__package/manifest @@ -34,6 +34,7 @@ else amazon|scientific|centos|fedora|redhat) type="yum" ;; archlinux) type="pacman" ;; debian|ubuntu|devuan) type="apt" ;; + clear-linux-os) type="swupd" ;; freebsd) if [ -n "$(cat "$__object/explorer/pkgng_exists")" ]; then type="pkgng_freebsd" -- 2.40.1 From 382cdcaa335a453513f189505fa65adf35dcd68e Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 20:52:44 +0100 Subject: [PATCH 4/8] introduce Clear Linux OS to the __docker type --- cdist/conf/type/__docker/manifest | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cdist/conf/type/__docker/manifest b/cdist/conf/type/__docker/manifest index 6a57d85a..1132f03c 100755 --- a/cdist/conf/type/__docker/manifest +++ b/cdist/conf/type/__docker/manifest @@ -44,6 +44,21 @@ case "$os" in exit 1 fi ;; + clear-linux-os) + if [ "${state}" = present ] + then + if [ "$version" != latest ] + then + >&2 echo "Specifying Docker version is unsupported with \"$os\"" + exit 1 + fi + __package_swupd cloud-control + else + >&2 echo 'Warning: cowardly refusing to remove "cloud-control", disabling Dockerd instead' + __systemd_service docker --state stopped + __systemd_unit docker --enablement-state disabled + fi + ;; ubuntu|debian) if [ "${state}" = "present" ]; then __package apt-transport-https -- 2.40.1 From bbd1ba6bb7030096812914d7afddf0ccdb1a092a Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 20:53:09 +0100 Subject: [PATCH 5/8] introduce Clear Linux OS to the __locale_system type Note: I choose to use the Slackware code block to not create a new logical path (and it does work). --- cdist/conf/type/__locale_system/manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/conf/type/__locale_system/manifest b/cdist/conf/type/__locale_system/manifest index 4b996ebc..1ccc57e5 100755 --- a/cdist/conf/type/__locale_system/manifest +++ b/cdist/conf/type/__locale_system/manifest @@ -156,7 +156,7 @@ in locale_conf_mode=0555 fi ;; - slackware) + clear-linux-os|slackware) # NOTE: lang.csh (csh config) is ignored here. locale_conf="/etc/profile.d/lang.sh" locale_conf_mode=0755 -- 2.40.1 From 21055f2779986fefba6236be6a94506ad55e41d6 Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 20:54:38 +0100 Subject: [PATCH 6/8] introduce Clear Linux OS to the __localedef type --- cdist/conf/type/__localedef/gencode-remote | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/conf/type/__localedef/gencode-remote b/cdist/conf/type/__localedef/gencode-remote index 4538151f..506a73b5 100755 --- a/cdist/conf/type/__localedef/gencode-remote +++ b/cdist/conf/type/__localedef/gencode-remote @@ -61,7 +61,7 @@ in printf '%s does not support locales.\n' "${os}" >&2 exit 1 ;; - (archlinux|debian|devuan|ubuntu|suse|centos|fedora|redhat|scientific) + (archlinux|debian|devuan|ubuntu|suse|centos|fedora|redhat|scientific|clear-linux-os) # FIXME: The code below only works for glibc-based installations. # NOTE: Hardcoded, create a pull request in case it is at another -- 2.40.1 From 41309043c663b32e30c246d2c3ae2ad855356fc3 Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 20:54:57 +0100 Subject: [PATCH 7/8] introduce Clear Linux OS to the __sshd_config type --- cdist/conf/type/__sshd_config/manifest | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cdist/conf/type/__sshd_config/manifest b/cdist/conf/type/__sshd_config/manifest index e37afebb..3ec630ce 100755 --- a/cdist/conf/type/__sshd_config/manifest +++ b/cdist/conf/type/__sshd_config/manifest @@ -24,7 +24,7 @@ state_should=$(cat "${__object:?}/parameter/state") case ${os} in - (alpine|centos|fedora|redhat|scientific|debian|devuan|ubuntu) + (alpine|centos|clear-linux-os|fedora|redhat|scientific|debian|devuan|ubuntu) if test "${state_should}" != 'absent' then __package openssh-server --state present -- 2.40.1 From a8cf54e462d263d38a0fa523a932557636528cc2 Mon Sep 17 00:00:00 2001 From: Romain Dartigues Date: Sat, 10 Feb 2024 20:55:15 +0100 Subject: [PATCH 8/8] introduce Clear Linux OS to the __sysctl type --- cdist/conf/type/__sysctl/gencode-remote | 2 +- cdist/conf/type/__sysctl/manifest | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cdist/conf/type/__sysctl/gencode-remote b/cdist/conf/type/__sysctl/gencode-remote index f0f6deef..eba79eb7 100755 --- a/cdist/conf/type/__sysctl/gencode-remote +++ b/cdist/conf/type/__sysctl/gencode-remote @@ -30,7 +30,7 @@ fi os=$(cat "$__global/explorer/os") case "$os" in # Linux - redhat|centos|ubuntu|debian|devuan|archlinux|gentoo|coreos) + redhat|centos|ubuntu|debian|devuan|archlinux|gentoo|coreos|clear-linux-os) flag='-w' ;; # BusyBox diff --git a/cdist/conf/type/__sysctl/manifest b/cdist/conf/type/__sysctl/manifest index 71dea7f7..d748acf1 100755 --- a/cdist/conf/type/__sysctl/manifest +++ b/cdist/conf/type/__sysctl/manifest @@ -25,7 +25,7 @@ os=$(cat "$__global/explorer/os") case "$os" in # Linux - alpine|redhat|centos|ubuntu|debian|devuan|archlinux|coreos) + alpine|redhat|centos|ubuntu|debian|devuan|archlinux|coreos|clear-linux-os) : ;; # BSD -- 2.40.1