From 8ec728fd4bb24d7de7dd115cc513384c1b743942 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 19:28:18 +0200 Subject: [PATCH 1/5] Type pkg_openbsd --- .../explorer/pkg_version | 31 +++++++++ .../type/__package_pkg_openbsd/gencode-remote | 64 +++++++++++++++++++ conf/type/__package_pkg_openbsd/man.text | 58 +++++++++++++++++ .../__package_pkg_openbsd/parameter/optional | 2 + .../__package_pkg_openbsd/parameter/required | 1 + 5 files changed, 156 insertions(+) create mode 100755 conf/type/__package_pkg_openbsd/explorer/pkg_version create mode 100755 conf/type/__package_pkg_openbsd/gencode-remote create mode 100644 conf/type/__package_pkg_openbsd/man.text create mode 100644 conf/type/__package_pkg_openbsd/parameter/optional create mode 100644 conf/type/__package_pkg_openbsd/parameter/required diff --git a/conf/type/__package_pkg_openbsd/explorer/pkg_version b/conf/type/__package_pkg_openbsd/explorer/pkg_version new file mode 100755 index 00000000..bc23a85d --- /dev/null +++ b/conf/type/__package_pkg_openbsd/explorer/pkg_version @@ -0,0 +1,31 @@ +#!/bin/sh +# +# 2011 Andi Brönnimann (andi-cdist at v-net.ch) +# +# 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 - parsed dpkg output +# + +if [ -f "$__object/parameter/name" ]; then + name="$(cat "$__object/parameter/name")" +else + name="$__object_id" +fi + +#TODO: Is there a better way? +pkg_info | grep "$name" | sed 's .*\(-[0-9.][0-9.]*\).* \1 ' | sed 's/-//' diff --git a/conf/type/__package_pkg_openbsd/gencode-remote b/conf/type/__package_pkg_openbsd/gencode-remote new file mode 100755 index 00000000..a5756c8d --- /dev/null +++ b/conf/type/__package_pkg_openbsd/gencode-remote @@ -0,0 +1,64 @@ +#!/bin/sh +# +# 2011 Andi Brönnimann (andi-cdist at v-net.ch) +# +# 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 with Pacman (mostly archlinux) +# + +# Debug +# exec >&2 +# set -x + +os_version="$(cat "$__global/explorer/os_version")" +platform="$(cat "$__global/explorer/platform")" + + +if [ -f "$__object/parameter/flavor" ]; then + flavor="$(cat "$__object/parameter/flavor")" +fi + +# do not show progress bar +pkgopts="-x" + +if [ -f "$__object/parameter/name" ]; then + name="$__object/parameter/name" +else + name="$__object_id" +fi + +state="$(cat "$__object/parameter/state")" +pkg_version="$(cat "$__object/explorer/pkg_version")" + +# TODO: Shouldn't be hardcoded +echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$platform/ + +case "$state" in + installed) + + # Empty? Not installed. + if [ -z "$pkg_version" ]; then + echo pkg_add "$pkgopts" \"$name--$flavor\" + fi + ;; + uninstalled) + if [ "$pkg_version" ]; then + echo pkg_delete "$pkgopts" \"$name--$flavor\" + fi + ;; +esac diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text new file mode 100644 index 00000000..613c9045 --- /dev/null +++ b/conf/type/__package_pkg_openbsd/man.text @@ -0,0 +1,58 @@ +cdist-type__package_pkg(7) +============================= +Andreas Brönnimann + + +NAME +---- +cdist-type__package_pkg_openbsd - Manage OpenBSD packages + + +DESCRIPTION +----------- +This type is usually used on OpenBSD to manage packages. + + +REQUIRED PARAMETERS +------------------- +state:: + Either "installed" or "uninstalled". + + +OPTIONAL PARAMETERS +------------------- +name:: + If supplied, use the name and not the object id as the package name. + +flavor:: + If supplied, use to avoid ambigous + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +# Ensure zsh is installed +__package_pkg_openbsd zsh --state installed + +# Ensure vim is installed, use flavor no_x11 +__package_pkg_openbsd vim --state installed --flavor no_x11 + +# If you don't want to follow pythonX packages, but always use python +__package_pkg_openbsd python --state installed --name python2 + +# Remove obsolete package +__package_pkg_openbsd puppet --state uninstalled +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) +- cdist-type__package(7) + + +COPYING +------- +Copyright \(C) 2011 Andi Brönnimann. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__package_pkg_openbsd/parameter/optional b/conf/type/__package_pkg_openbsd/parameter/optional new file mode 100644 index 00000000..29b123ef --- /dev/null +++ b/conf/type/__package_pkg_openbsd/parameter/optional @@ -0,0 +1,2 @@ +name +flavor diff --git a/conf/type/__package_pkg_openbsd/parameter/required b/conf/type/__package_pkg_openbsd/parameter/required new file mode 100644 index 00000000..ff72b5c7 --- /dev/null +++ b/conf/type/__package_pkg_openbsd/parameter/required @@ -0,0 +1 @@ +state From aebf05001afd4a192bb49d228c7bae21b8c2540c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 19:40:54 +0200 Subject: [PATCH 2/5] Add platform explorer --- conf/explorer/platform | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100755 conf/explorer/platform diff --git a/conf/explorer/platform b/conf/explorer/platform new file mode 100755 index 00000000..a28f6d08 --- /dev/null +++ b/conf/explorer/platform @@ -0,0 +1,34 @@ +#!/bin/sh +# +# 2010-2011 Andi Brönnimann (andi-cdist at v-net.ch) +# +# 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 . +# +# +# All os variables are lower case +# +# + +os="$(cat "$__global/explorer/os")" + +case "$os" in + archlinux) + echo $(uname -m) + ;; + openbsd) + echo $(uname -m) + ;; +esac From 52fb8d5661d8a1004fcfa2cb45af31f5354bec04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 19:50:45 +0200 Subject: [PATCH 3/5] Change platform to hardware_type --- conf/explorer/{platform => hardware_type} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename conf/explorer/{platform => hardware_type} (100%) diff --git a/conf/explorer/platform b/conf/explorer/hardware_type similarity index 100% rename from conf/explorer/platform rename to conf/explorer/hardware_type From 836c2ae7b8ef412888fc596b6ee38cd32fbb2bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Tue, 5 Apr 2011 23:23:24 +0200 Subject: [PATCH 4/5] Add error output to __package_pkg_openbsd --- conf/explorer/hardware_type | 7 ++-- .../type/__package_pkg_openbsd/gencode-remote | 35 +++++++++++++++---- conf/type/__package_pkg_openbsd/man.text | 6 ++-- 3 files changed, 33 insertions(+), 15 deletions(-) diff --git a/conf/explorer/hardware_type b/conf/explorer/hardware_type index a28f6d08..5966b11e 100755 --- a/conf/explorer/hardware_type +++ b/conf/explorer/hardware_type @@ -22,13 +22,10 @@ # # -os="$(cat "$__global/explorer/os")" +os="$($__explorer/os)" case "$os" in - archlinux) - echo $(uname -m) - ;; - openbsd) + archlinux|*bsd) echo $(uname -m) ;; esac diff --git a/conf/type/__package_pkg_openbsd/gencode-remote b/conf/type/__package_pkg_openbsd/gencode-remote index a5756c8d..0ad85458 100755 --- a/conf/type/__package_pkg_openbsd/gencode-remote +++ b/conf/type/__package_pkg_openbsd/gencode-remote @@ -18,7 +18,7 @@ # along with cdist. If not, see . # # -# Manage packages with Pacman (mostly archlinux) +# Manage packages with pkg on OpenBSD # # Debug @@ -26,7 +26,7 @@ # set -x os_version="$(cat "$__global/explorer/os_version")" -platform="$(cat "$__global/explorer/platform")" +hardware_type="$(cat "$__global/explorer/hardware_type")" if [ -f "$__object/parameter/flavor" ]; then @@ -46,19 +46,40 @@ state="$(cat "$__object/parameter/state")" pkg_version="$(cat "$__object/explorer/pkg_version")" # TODO: Shouldn't be hardcoded -echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$platform/ +echo export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/$os_version/packages/$hardware_type/ case "$state" in installed) - # Empty? Not installed. if [ -z "$pkg_version" ]; then - echo pkg_add "$pkgopts" \"$name--$flavor\" + # use this because pkg_add doesn't properly handle errors + cat << eof + status=\$(pkg_add "$pkgopts" "$name--$flavor") + + # no error + if [ -n "\$status" ]; then + echo "Error: \$status" + exit 1 + fi +eof fi ;; - uninstalled) + removed) if [ "$pkg_version" ]; then - echo pkg_delete "$pkgopts" \"$name--$flavor\" + # use this because pkg_add doesn't properly handle errors + cat << eof + status=\$(pkg_delete "$pkgopts" "$name--$flavor") + + # no error + if [ -n "\$status" ]; then + echo "Error: \$status" + exit 1 + fi +eof fi ;; + *) + echo "Unknown state: $state" >&2 + exit 1 + ;; esac diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text index 613c9045..32501ba8 100644 --- a/conf/type/__package_pkg_openbsd/man.text +++ b/conf/type/__package_pkg_openbsd/man.text @@ -1,6 +1,6 @@ cdist-type__package_pkg(7) ============================= -Andreas Brönnimann +Andi Brönnimann NAME @@ -16,7 +16,7 @@ This type is usually used on OpenBSD to manage packages. REQUIRED PARAMETERS ------------------- state:: - Either "installed" or "uninstalled". + Either "installed" or "removed". OPTIONAL PARAMETERS @@ -42,7 +42,7 @@ __package_pkg_openbsd vim --state installed --flavor no_x11 __package_pkg_openbsd python --state installed --name python2 # Remove obsolete package -__package_pkg_openbsd puppet --state uninstalled +__package_pkg_openbsd puppet --state removed -------------------------------------------------------------------------------- From e28923558920bbe9bb8461c1710c00a1318c8131 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=B6nnimann?= Date: Wed, 6 Apr 2011 20:16:36 +0200 Subject: [PATCH 5/5] Fix typo --- conf/type/__package_pkg_openbsd/man.text | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conf/type/__package_pkg_openbsd/man.text b/conf/type/__package_pkg_openbsd/man.text index 32501ba8..c0fae241 100644 --- a/conf/type/__package_pkg_openbsd/man.text +++ b/conf/type/__package_pkg_openbsd/man.text @@ -25,7 +25,7 @@ name:: If supplied, use the name and not the object id as the package name. flavor:: - If supplied, use to avoid ambigous + If supplied, use to avoid ambiguity. EXAMPLES