From 2bab4ed93b95c6c2cfb6f478131dceaef784ca71 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:38:28 +0100 Subject: [PATCH 1/6] dont use python in type explorer Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state index c50af3f0..69af1937 100755 --- a/conf/type/__apt_ppa/explorer/state +++ b/conf/type/__apt_ppa/explorer/state @@ -23,6 +23,10 @@ name="$__object_id" -# FIXME: on first run check-apt-repository may not be installed -check-apt-repository "$name" && echo enabled || echo disabled +. /etc/lsb-release + +repo_name="${name#ppa:}" +repo_file_name="$(echo "$repo_name" | sed "s:\/:\-:")-${DISTRIB_CODENAME}.list" + +[ -f "/etc/apt/sources.list.d/${repo_file_name}" ] && echo enabled || echo disabled From f46b2a9a5a2434430506e93e1aec41aaef87beb2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:39:28 +0100 Subject: [PATCH 2/6] no longer need check-apt-repository Signed-off-by: Steven Armstrong --- .../type/__apt_ppa/files/check-apt-repository | 42 ------------------- conf/type/__apt_ppa/manifest | 6 +-- 2 files changed, 1 insertion(+), 47 deletions(-) delete mode 100755 conf/type/__apt_ppa/files/check-apt-repository diff --git a/conf/type/__apt_ppa/files/check-apt-repository b/conf/type/__apt_ppa/files/check-apt-repository deleted file mode 100755 index 4f4252c1..00000000 --- a/conf/type/__apt_ppa/files/check-apt-repository +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python -# -# Check if the given apt repository is installed or not. -# Exit with: -# 0: if it is installed -# 1: if not -# 2: on error -# - -import sys -from aptsources import distro, sourceslist -from softwareproperties import ppa - - -def is_repository_installed(repository): - #print 'repository:', repository - codename = distro.get_distro().codename - #print 'codename:', codename - (line, file) = ppa.expand_ppa_line(repository.strip(), codename) - #print 'line:', line - #print 'file:', file - sources_list = sourceslist.SourcesList() - source_entry = sourceslist.SourceEntry(line, file) - - if source_entry in sources_list: - #print 'yes' - return True - else: - #print 'no' - return False - -if __name__ == '__main__': - if (len(sys.argv) != 2): - print 'Error: need a repository as argument' - sys.exit(2) - #repository = 'ppa:freenx-team' - repository = sys.argv[1] - if is_repository_installed(repository): - sys.exit(0) - else: - sys.exit(1) - diff --git a/conf/type/__apt_ppa/manifest b/conf/type/__apt_ppa/manifest index a97ced75..d5df9e23 100755 --- a/conf/type/__apt_ppa/manifest +++ b/conf/type/__apt_ppa/manifest @@ -18,14 +18,10 @@ # along with cdist. If not, see . # +name="$__object_id" __package python-software-properties --state installed -require="__package/python-software-properties" \ - __file /usr/local/bin/check-apt-repository \ - --source "$__type/files/check-apt-repository" \ - --mode 0755 - require="__package/python-software-properties" \ __file /usr/local/bin/remove-apt-repository \ --source "$__type/files/remove-apt-repository" \ From 0356d2eeff9f35ac6e33c926d41ad9cbca8a9103 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 17:45:03 +0100 Subject: [PATCH 3/6] also check if sources file is not empty Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state index 69af1937..86c401a4 100755 --- a/conf/type/__apt_ppa/explorer/state +++ b/conf/type/__apt_ppa/explorer/state @@ -28,5 +28,7 @@ name="$__object_id" repo_name="${name#ppa:}" repo_file_name="$(echo "$repo_name" | sed "s:\/:\-:")-${DISTRIB_CODENAME}.list" -[ -f "/etc/apt/sources.list.d/${repo_file_name}" ] && echo enabled || echo disabled +[ -f "/etc/apt/sources.list.d/${repo_file_name}" -a \ + -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ + && echo enabled || echo disabled From e829fe65cd92cc66856d98908c1e445b1020d1e2 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Wed, 23 Mar 2011 21:14:17 +0100 Subject: [PATCH 4/6] checking for filesize already includes check for file existence Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/explorer/state | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/conf/type/__apt_ppa/explorer/state b/conf/type/__apt_ppa/explorer/state index 86c401a4..8a5638b2 100755 --- a/conf/type/__apt_ppa/explorer/state +++ b/conf/type/__apt_ppa/explorer/state @@ -28,7 +28,6 @@ name="$__object_id" repo_name="${name#ppa:}" repo_file_name="$(echo "$repo_name" | sed "s:\/:\-:")-${DISTRIB_CODENAME}.list" -[ -f "/etc/apt/sources.list.d/${repo_file_name}" -a \ - -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ +[ -s "/etc/apt/sources.list.d/${repo_file_name}" ] \ && echo enabled || echo disabled From 9094f50b035421e2d773f08ce54bbb0a477262fd Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 08:30:51 +0100 Subject: [PATCH 5/6] new type: __apt_update_index Signed-off-by: Steven Armstrong --- conf/type/__apt_update_index/gencode-remote | 35 ++++++++++++++++ conf/type/__apt_update_index/man.text | 44 +++++++++++++++++++++ conf/type/__apt_update_index/singleton | 0 3 files changed, 79 insertions(+) create mode 100755 conf/type/__apt_update_index/gencode-remote create mode 100644 conf/type/__apt_update_index/man.text create mode 100644 conf/type/__apt_update_index/singleton diff --git a/conf/type/__apt_update_index/gencode-remote b/conf/type/__apt_update_index/gencode-remote new file mode 100755 index 00000000..ad2296df --- /dev/null +++ b/conf/type/__apt_update_index/gencode-remote @@ -0,0 +1,35 @@ +#!/bin/sh +# +# 2011 Steven Armstrong (steven-cdist at armstrong.cc) +# +# 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 . +# + +# BIG FAT FIXME: there must be a better way to do this! +tmpdir=$(mktemp -d) +cleanup() { + rm -rf "$tmpdir" +} +trap cleanup EXIT + +should="$tmpdir/should" +is="$tmpdir/is" + +find "$__global/object/__apt_ppa" -path "*.cdist/parameter/state" | xargs cat > "$should" +find "$__global/object/__apt_ppa" -path "*.cdist/explorer/state" | xargs cat > "$is" + +diff -ru "$is" "$should" || echo apt-get update + diff --git a/conf/type/__apt_update_index/man.text b/conf/type/__apt_update_index/man.text new file mode 100644 index 00000000..dffba372 --- /dev/null +++ b/conf/type/__apt_update_index/man.text @@ -0,0 +1,44 @@ +cdist-type__apt_update_index(7) +========================== +Steven Armstrong + + +NAME +---- +cdist-type__apt_update_index - resynchronize the apt package index + + +DESCRIPTION +----------- +This cdist type allows you to resynchronize the package index files from their +sources. In other words, it runs `apt-get update`. + +FIXME: currently hard coded to work together with the __apt_ppa type + + +REQUIRED PARAMETERS +------------------- +None. + +OPTIONAL PARAMETERS +------------------- +None. + + +EXAMPLES +-------- + +-------------------------------------------------------------------------------- +__apt_update_index +-------------------------------------------------------------------------------- + + +SEE ALSO +-------- +- cdist-type(7) + + +COPYING +------- +Copyright \(C) 2011 Steven Armstrong. Free use of this software is +granted under the terms of the GNU General Public License version 3 (GPLv3). diff --git a/conf/type/__apt_update_index/singleton b/conf/type/__apt_update_index/singleton new file mode 100644 index 00000000..e69de29b From 15b1bdab7791033a6154a75d0000ee4069fe8fa0 Mon Sep 17 00:00:00 2001 From: Steven Armstrong Date: Thu, 24 Mar 2011 08:31:23 +0100 Subject: [PATCH 6/6] use __apt_update_index Signed-off-by: Steven Armstrong --- conf/type/__apt_ppa/manifest | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/conf/type/__apt_ppa/manifest b/conf/type/__apt_ppa/manifest index d5df9e23..ad6ee614 100755 --- a/conf/type/__apt_ppa/manifest +++ b/conf/type/__apt_ppa/manifest @@ -27,3 +27,8 @@ require="__package/python-software-properties" \ --source "$__type/files/remove-apt-repository" \ --mode 0755 +# FIXME: rewrite to use $__self once that exists +# FIXME: only run if something changed. currently working arround this in +# __apt_update_index/gencode-remote +require="__apt_ppa/$__object_id" __apt_update_index +