Added new version with new database format. pkg_postinst populates the new database...
authorMatthias Schwarzott <zzam@gentoo.org>
Thu, 19 Oct 2006 10:47:54 +0000 (10:47 +0000)
committerMatthias Schwarzott <zzam@gentoo.org>
Thu, 19 Oct 2006 10:47:54 +0000 (10:47 +0000)
Package-Manager: portage-2.1.2_pre3-r5

media-tv/vdrplugin-rebuild/ChangeLog
media-tv/vdrplugin-rebuild/Manifest
media-tv/vdrplugin-rebuild/files/digest-vdrplugin-rebuild-0.1
media-tv/vdrplugin-rebuild/files/digest-vdrplugin-rebuild-0.2 [new file with mode: 0644]
media-tv/vdrplugin-rebuild/files/vdrplugin-rebuild-0.2 [new file with mode: 0644]
media-tv/vdrplugin-rebuild/vdrplugin-rebuild-0.2.ebuild [new file with mode: 0644]

index e2d442632cea715207066827901f3e9d1751710d..6b09c0c834912858995354a10fba950117dbdae8 100644 (file)
@@ -1,6 +1,13 @@
 # ChangeLog for media-tv/vdrplugin-rebuild
 # Copyright 1999-2006 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/media-tv/vdrplugin-rebuild/ChangeLog,v 1.8 2006/08/01 18:45:13 zzam Exp $
+# $Header: /var/cvsroot/gentoo-x86/media-tv/vdrplugin-rebuild/ChangeLog,v 1.9 2006/10/19 10:47:54 zzam Exp $
+
+*vdrplugin-rebuild-0.2 (19 Oct 2006)
+
+  19 Oct 2006; Matthias Schwarzott <zzam@gentoo.org>
+  +files/vdrplugin-rebuild-0.2, +vdrplugin-rebuild-0.2.ebuild:
+  Added new version with new database format. pkg_postinst populates the new
+  database from looking at /var/db/pkg.
 
   01 Aug 2006; Matthias Schwarzott <zzam@gentoo.org> metadata.xml:
   Assigned to VDR-Project.
index a568f79463b72c14505bab4aee07909fedddc327..66ef39518abd4fc253dfb98d761312742668a877 100644 (file)
@@ -5,25 +5,36 @@ AUX vdrplugin-rebuild-0.1 6693 RMD160 a2007751db6f7496b17e9ef8d09a1d687c956349 S
 MD5 db792d6666e43fc873af492d3e79cfef files/vdrplugin-rebuild-0.1 6693
 RMD160 a2007751db6f7496b17e9ef8d09a1d687c956349 files/vdrplugin-rebuild-0.1 6693
 SHA256 951310b2892cbfd18a7dbd28f1d51d4c8c46d997bbb8fd3b29e28f845ee291de files/vdrplugin-rebuild-0.1 6693
+AUX vdrplugin-rebuild-0.2 6395 RMD160 97fd2fedba34e7564e5bc8345747ed2ad7422c32 SHA1 c7a535f75b273859b7634d10e9942a6ea30443c6 SHA256 63c9eaea2ee0a2b77ad9f35f4616bb6a91dcf756d73fdaee105511fbac89e450
+MD5 bb1066fa6e6f714115a9430a280f4c1a files/vdrplugin-rebuild-0.2 6395
+RMD160 97fd2fedba34e7564e5bc8345747ed2ad7422c32 files/vdrplugin-rebuild-0.2 6395
+SHA256 63c9eaea2ee0a2b77ad9f35f4616bb6a91dcf756d73fdaee105511fbac89e450 files/vdrplugin-rebuild-0.2 6395
 EBUILD vdrplugin-rebuild-0.1.ebuild 486 RMD160 73cd2cc3592fea336cf821607de7265d1c11c2c8 SHA1 0dcf00d0c655dec2bda93131868b2e585aaa21d6 SHA256 9f085d8ac33b76902a499a27240029c2de3eab1dc20e90c13a7d739256805af8
 MD5 be062631020daf63530d8b1be6738143 vdrplugin-rebuild-0.1.ebuild 486
 RMD160 73cd2cc3592fea336cf821607de7265d1c11c2c8 vdrplugin-rebuild-0.1.ebuild 486
 SHA256 9f085d8ac33b76902a499a27240029c2de3eab1dc20e90c13a7d739256805af8 vdrplugin-rebuild-0.1.ebuild 486
-MISC ChangeLog 1284 RMD160 7260f5f65fb3d7f496aea9b235c02b4b21111388 SHA1 9f4c9e852262abe8e12ba096a810f8190d2290dc SHA256 a78710ae3fdf25c642bc5f5e80997d95ead319434169bd94a64aedf28081305d
-MD5 88b6ad30b76a02b88cf6f6e2b0354dac ChangeLog 1284
-RMD160 7260f5f65fb3d7f496aea9b235c02b4b21111388 ChangeLog 1284
-SHA256 a78710ae3fdf25c642bc5f5e80997d95ead319434169bd94a64aedf28081305d ChangeLog 1284
+EBUILD vdrplugin-rebuild-0.2.ebuild 857 RMD160 52a3e100d23a0d653a98a8fd43a506dce4b3a18d SHA1 47997f9d141cd838e0ea12d1ad5d0deedf3487c2 SHA256 8edb037d0e48cb39f1e5cad6b8146d3fada4ae00fe3dbbb5230c07e4c9dc7c4e
+MD5 ef56d7c1bcca36eaf58a15d5c54e60a6 vdrplugin-rebuild-0.2.ebuild 857
+RMD160 52a3e100d23a0d653a98a8fd43a506dce4b3a18d vdrplugin-rebuild-0.2.ebuild 857
+SHA256 8edb037d0e48cb39f1e5cad6b8146d3fada4ae00fe3dbbb5230c07e4c9dc7c4e vdrplugin-rebuild-0.2.ebuild 857
+MISC ChangeLog 1556 RMD160 398138f7104e01b6e0370981ca06d01b99d383b6 SHA1 4baddcc4c1ffeab5752154349eacfbea8bf331b0 SHA256 63aca70d13ce92896bccc3dc2c157202c0a81a148b7b0a78636ab33630df2e8f
+MD5 687d93942cb014e76ff5395955c763b9 ChangeLog 1556
+RMD160 398138f7104e01b6e0370981ca06d01b99d383b6 ChangeLog 1556
+SHA256 63aca70d13ce92896bccc3dc2c157202c0a81a148b7b0a78636ab33630df2e8f ChangeLog 1556
 MISC metadata.xml 257 RMD160 8bee49b98c59996aaaa019fb2c764c08d8004507 SHA1 d2419394e7d5c7463d7dea33e9190ebd57484531 SHA256 0dd45fbbaf1c6173535e371e3ff8a3faa41f3f89123ac9dffe338998599ebe26
 MD5 116de98355049ce943c3b6fedc00b4a3 metadata.xml 257
 RMD160 8bee49b98c59996aaaa019fb2c764c08d8004507 metadata.xml 257
 SHA256 0dd45fbbaf1c6173535e371e3ff8a3faa41f3f89123ac9dffe338998599ebe26 metadata.xml 257
-MD5 68b329da9893e34099c7d8ad5cb9c940 files/digest-vdrplugin-rebuild-0.1 1
-RMD160 c0da025038ed83c687ddc430da9846ecb97f3998 files/digest-vdrplugin-rebuild-0.1 1
-SHA256 01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b files/digest-vdrplugin-rebuild-0.1 1
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-vdrplugin-rebuild-0.1 0
+RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 files/digest-vdrplugin-rebuild-0.1 0
+SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 files/digest-vdrplugin-rebuild-0.1 0
+MD5 d41d8cd98f00b204e9800998ecf8427e files/digest-vdrplugin-rebuild-0.2 0
+RMD160 9c1185a5c5e9fc54612808977ee8f548b2258d31 files/digest-vdrplugin-rebuild-0.2 0
+SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 files/digest-vdrplugin-rebuild-0.2 0
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.5rc1 (GNU/Linux)
+Version: GnuPG v1.4.5 (GNU/Linux)
 
-iD8DBQFEz6E+t2vP6XvVdOcRAt2lAKDSH+CkZgU7434+23RzGyZU5+wEewCeJOj1
-m+/Ap/bSr0QEvGA5Eidk5hE=
-=UQeq
+iD8DBQFFN1fmt2vP6XvVdOcRAsa/AKCkGUI36XkibTNS9ceRIGsj3szqLQCfRlz6
+I6iNXO44DPhY38uywWlGmMQ=
+=7a5v
 -----END PGP SIGNATURE-----
diff --git a/media-tv/vdrplugin-rebuild/files/digest-vdrplugin-rebuild-0.2 b/media-tv/vdrplugin-rebuild/files/digest-vdrplugin-rebuild-0.2
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/media-tv/vdrplugin-rebuild/files/vdrplugin-rebuild-0.2 b/media-tv/vdrplugin-rebuild/files/vdrplugin-rebuild-0.2
new file mode 100644 (file)
index 0000000..38b01ea
--- /dev/null
@@ -0,0 +1,282 @@
+#!/bin/bash
+#######################################
+# Inspiration from bug #34921
+# Thanks to Paul Varner
+
+# Distributed under the GPL v2
+# Written by John Mylchreest (johnm@gentoo.org)
+
+# This version is based on module-rebuild-0.5
+
+# Changed for vdrplugins by Matthias Schwarzott (zzam@gentoo.org)
+# Copyright Gentoo Linux
+
+# Changed to a new db-format with seperate files for each ebuild.
+
+if [[ `id -u` != 0 ]]; then
+       echo "This application must be ran as root."
+       exit 1
+fi
+
+R_VERSION="0.2"
+R_MODULES="${ROOT}/usr/share/vdr/vdrplugin-rebuild"
+R_PORTAGEQ="`which portageq 2>/dev/null`"
+if [[ -z ${R_PORTAGEQ} ]]; then
+       echo "** FATAL: Unable to find portageq."
+       exit 1
+fi
+R_PORTDIR=`${R_PORTAGEQ} portdir`
+R_VDBPATH=`${R_PORTAGEQ} vdb_path`
+R_OPTION_X=0;
+R_OPTION_C=0;
+
+package_valid() {
+       local package=${1}
+       [[ -z ${package} ]] && return 1
+       [[ -z ${package/*\/*} ]] && return 0 || return 1
+}
+
+package_valid_strict() {
+       local package=${1}
+       package_valid ${package} && [[ -z ${package%%*-[0-9]*} ]] && return 0 || return 1
+}
+
+package_exists() {
+       local package=${1}
+
+       package=${package%-[0-9]*}
+       if $(${R_PORTAGEQ} has_version / ${package}); then
+               return 0
+       else
+               return 1
+       fi
+}
+
+db_module_exists() {
+       local package=${1} dbfile
+
+       dbfile=${R_MODULES}/${package/\//-}
+
+       [[ -e ${dbfile} ]] && grep -q VDRPLUGIN_DB ${dbfile} && return 0
+       return 1
+}
+
+db_module_add() {
+       local package=${1}
+
+       if db_module_exists ${package}; then
+               echo -e "${C_BOLD}** Module ${package} already exists in vdrplugindb.${C_NORM}"
+               return 0
+       else
+               if package_exists ${package}; then
+                       echo -e "${C_BOLD}${C_GREEN}** Adding ${package} to vdrplugindb.${C_NORM}"
+                       local ebuild=${package%-[0-9]*}
+                       local ebuild_v="${package#${ebuild}-}"
+                       cat <<-EOT > ${R_MODULES}/${package/\//-}
+                               VDRPLUGIN_DB=1
+                               CREATOR=vdrplugin-rebuild-POPULATE
+                               EBUILD=${ebuild}
+                               EBUILD_V=${ebuild_v}
+                       EOT
+                       return 0
+               else
+                       echo -e "${C_RED}** Unable to locate an available ebuild for ${package}.${C_NORM}"
+                       echo "** Please manually emerge ${package} first."
+               fi
+       fi
+       return 1
+}
+
+db_module_del() {
+       local package=${1}
+       
+       if db_module_exists ${package}; then
+               echo "** Removing ${package} from vdrplugindb."
+               rm ${R_MODULES}/${package/\//-}
+               return 0
+       else
+               echo "** ${package} not found in vdrplugindb."
+               return 1
+       fi
+}
+
+db_module_list() {
+       local dbfile line auto pkg a=0 b=0 ebuild ebuild_v
+
+       for dbfile in $(find /usr/share/vdr/vdrplugin-rebuild/ -type f); do
+               grep -q VDRPLUGIN_DB=1 ${dbfile} || continue
+               eval $(source ${dbfile}; echo ebuild=${EBUILD}; echo ebuild_v=${EBUILD_V})
+
+               auto=1
+
+               if [[ ${R_OPTION_X} == 1 ]]; then
+                       pkg=${ebuild}
+                       package_valid ${pkg}
+               else
+                       pkg=${ebuild}-${ebuild_v}
+                       package_valid_strict ${pkg} && pkg="=${pkg}"
+               fi
+
+               if [[ ${auto} = 1 ]]; then
+                       tomerge[${a}]=${pkg}
+                       a=$((${a} + 1))
+               else
+                       toignore[${b}]=${pkg}
+                       b=$((${b} + 1))
+               fi
+       done
+
+       pkg="${tomerge[@]}${toignore[@]}"
+       if [[ -z ${pkg} ]]; then
+               echo -e "${C_BOLD}${C_RED}** There are no known modules. Quitting.${C_NORM}"
+               exit 1
+       fi
+
+       if [[ -n ${tomerge[@]} ]]; then
+               echo -e "${C_BOLD}${C_GREEN}** Packages which I will emerge are:${C_NORM}"
+               for pkg in ${tomerge[@]}; do
+                       echo -e "\t${pkg}"
+               done
+       fi
+
+       if [[ -n ${toignore[@]} ]]; then
+               echo -e "${C_BOLD}${C_GREEN}** Packages which I will ignore are:${C_NORM}"
+               for pkg in ${toignore[@]}; do
+                       echo -e "\t${pkg}"
+               done
+       fi
+}
+
+db_module_populate() {
+       local i x=0 pkg version list pad
+       
+       echo -e "${C_BOLD}${C_GREEN}** Populating database with installed Packages.${C_NORM}"
+       # Lets find them all
+       # chances are we will get a few dupes in here.
+       for pkg in `grep -i /usr/lib/vdr/plugins/libvdr ${R_VDBPATH}/*/*/CONTENTS`; do
+               pad=""; x=0;
+               
+               if [[ -z ${pkg//${R_VDBPATH}*} ]]; then
+                       for((i=0;i<=${#pkg};i++)); do
+                               [[ ${pkg:${i}:1} = / ]] && x=$((${x} + 1));
+                               [[ ${x} == 4 ]] || [[ ${x} == 5 ]] && pad="${pad}${pkg:${i}:1}";
+                       done
+                       # Remove any dupes
+                       list=${list//${pad:1}}
+                       list="${list} ${pad:1}"
+               fi
+       done
+       
+       for pkg in ${list}; do
+               db_module_add ${pkg};
+       done
+}
+
+db_module_merge() {
+       local i pkg
+       
+       echo -e "${C_BOLD}** Preparing to merge modules:${C_NORM}"
+       db_module_list >/dev/null
+
+       if [[ -z ${tomerge[@]} ]]; then
+               echo -e "${C_BOLD}${C_RED}** No packages to merge. Quitting.${C_NORM}"
+               exit 1
+       fi
+
+       echo -e "${C_BOLD}${C_GREEN}** Packages which I will emerge are:"${C_NORM}
+       for pkg in ${tomerge[@]}; do
+               echo -e "\t${pkg}"
+       done
+       
+       for((i=1;i<6;i++)); do
+               echo -en "${C_BOLD}${C_RED}$((6 - ${i})) ${C_NORM}"
+               sleep 1
+       done
+       echo
+
+       emerge --oneshot --nodeps ${tomerge[@]}
+}
+
+phelp() {
+cat << EOF
+vdrplugin-rebuild [options] action [category/package]
+Version: ${R_VERSION}
+
+Where options are:
+       -X       - Emerge based on package names,
+                  not exact versions.
+       -C       - Disable all coloured output.
+
+Where action is one of:
+       add      - Add package to vdrplugindb.
+       del      - Delete a package from vdrplugindb.
+       list     - List packages to auto-rebuild.
+       rebuild  - Rebuild packages.
+       populate - Populate the database with any
+                  packages which currently install
+                  plugins for vdr.
+
+EOF
+
+}
+
+check_validity() {
+       local package=${1} strict=${2:-0} ret=1
+
+       [[ ${strict} = 0 ]] && package_valid ${package} && ret=0
+       [[ ${strict} = 1 ]] && package_valid_strict ${package} && ret=0
+       
+       if [[ ${ret} != 0 ]]; then
+               echo "** Please pass the fully qualified package. For example:"
+               echo "** media-plugins/vdr-femon-0.9.1"
+               exit 1
+       fi
+}
+
+while getopts "XC" options; do
+       case ${options} in
+               X) R_OPTION_X='1';;
+               C) R_OPTION_C='1';;
+               *) phelp; exit 1;;
+       esac
+done
+
+if [[ ${R_OPTION_C} == 0 ]]; then
+       C_BOLD='\e[1m'
+       C_NORM='\e[0m'
+       C_GREEN='\e[32m'
+       C_RED='\e[31m'
+else
+       C_BOLD=''
+       C_NORM=''
+       C_GREEN=''
+       C_RED=''
+fi
+
+x=0
+for i in ${@:${OPTIND}}; do
+       if [[ ${i:0:1} != - ]]; then
+               R_PARAMS[${x}]=${i}
+               x=$((${x} + 1))
+       fi
+done
+unset i x
+
+# If the vdrplugindb doesnt exist, lets populate it automatically.
+if [[ ! -d ${R_MODULES} ]]; then
+       echo -e "${C_BOLD}${C_RED}No vdrplugindb found...${C_NORM}"
+
+       mkdir -p ${R_MODULES}
+
+       echo -e "${C_BOLD}Populating vdrplugindb...${C_NORM}"
+       R_PARAMS[0]=populate
+fi
+
+case ${R_PARAMS[0]} in
+       add)            check_validity ${R_PARAMS[1]} 1; db_module_add ${R_PARAMS[1]};;
+       del)            check_validity ${R_PARAMS[1]}; db_module_del ${R_PARAMS[1]};;
+       list)           db_module_list;;
+       rebuild)        db_module_merge;;
+       populate)       db_module_populate;;
+       *)                      phelp; exit 1;;
+esac
diff --git a/media-tv/vdrplugin-rebuild/vdrplugin-rebuild-0.2.ebuild b/media-tv/vdrplugin-rebuild/vdrplugin-rebuild-0.2.ebuild
new file mode 100644 (file)
index 0000000..941dcf1
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright 1999-2006 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-tv/vdrplugin-rebuild/vdrplugin-rebuild-0.2.ebuild,v 1.1 2006/10/19 10:47:54 zzam Exp $
+
+DESCRIPTION="A utility to rebuild any plugins for vdr which you have installed."
+HOMEPAGE="http://www.gentoo.org/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~x86"
+IUSE=""
+
+DEPEND=""
+
+src_install() {
+       newsbin ${FILESDIR}/${P%_rc*} ${PN}
+       keepdir /usr/share/vdr/vdrplugin-rebuild
+}
+
+pkg_postinst() {
+       if has_version "<=media-tv/vdrplugin-rebuild-0.1"; then
+               # populate new database
+               ${ROOT}/usr/sbin/vdrplugin-rebuild populate
+
+               local OLD_DB=${ROOT}/var/lib/vdrplugin-rebuild
+               if [[ -d ${OLD_DB} ]]; then
+                       einfo "Removing old vdrplugindb."
+                       rm ${OLD_DB}/vdrplugindb*
+                       rmdir ${OLD_DB}
+               fi
+       fi
+}
+