/[gentoo-x86]/eclass/savedconfig.eclass
Gentoo

Diff of /eclass/savedconfig.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.15 Revision 1.19
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2011 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/savedconfig.eclass,v 1.15 2011/07/26 17:35:12 zmedico Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/savedconfig.eclass,v 1.19 2012/01/04 07:45:16 vapier Exp $
4 4
5# @ECLASS: savedconfig.eclass 5# @ECLASS: savedconfig.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# base-system@gentoo.org 7# base-system@gentoo.org
8# @BLURB: common API for saving/restoring complex configuration files 8# @BLURB: common API for saving/restoring complex configuration files
27# time in order for things to work properly. 27# time in order for things to work properly.
28save_config() { 28save_config() {
29 if [[ ${EBUILD_PHASE} != "install" ]]; then 29 if [[ ${EBUILD_PHASE} != "install" ]]; then
30 die "Bad package! save_config only for use in src_install functions!" 30 die "Bad package! save_config only for use in src_install functions!"
31 fi 31 fi
32 [[ -z "${ED}" ]] && ED=${D} 32 [[ $# -eq 0 ]] && die "Usage: save_config <files>"
33 case $# in 33
34 0) die "Tell me what to save" 34 # Be lazy in our EAPI compat
35 ;; 35 : ${ED:=${D}}
36 1) if [[ -f "$1" ]]; then 36
37 dodir /etc/portage/savedconfig/${CATEGORY} 37 local dest="/etc/portage/savedconfig/${CATEGORY}"
38 cp "$1" "${ED}"/etc/portage/savedconfig/${CATEGORY}/${PF} \ 38 if [[ $# -eq 1 && -f $1 ]] ; then
39 || die "Failed to save $1" 39 # Just one file, so have the ${PF} be that config file
40 dodir "${dest}"
41 cp "$@" "${ED}/${dest}/${PF}" || die "failed to save $*"
40 else 42 else
41 dodir /etc/portage/savedconfig/${CATEGORY}/${PF} 43 # A dir, or multiple files, so have the ${PF} be a dir
42 treecopy "$1" "${ED}"/etc/portage/savedconfig/${CATEGORY}/${PF} \ 44 # with all the saved stuff below it
43 || die "Failed to save $1" 45 dodir "${dest}/${PF}"
46 treecopy "$@" "${ED}/${dest}/${PF}" || die "failed to save $*"
44 fi 47 fi
45 ;; 48
46 *)
47 dodir "${PORTAGE_CONFIGROOT}"/etc/portage/savedconfig/${CATEGORY}/${PF}
48 treecopy $* "${D}/${PORTAGE_CONFIGROOT}"/etc/portage/savedconfig/${CATEGORY}/${PF} \
49 || die "Failed to save $1"
50 esac
51 elog "Your configuration for ${CATEGORY}/${PF} has been saved in " 49 elog "Your configuration for ${CATEGORY}/${PF} has been saved in "
52 elog "/etc/portage/savedconfig/${CATEGORY}/${PF} for your editing pleasure." 50 elog "/etc/portage/savedconfig/${CATEGORY}/${PF} for your editing pleasure."
53 elog "You can edit these files by hand and remerge this package with" 51 elog "You can edit these files by hand and remerge this package with"
54 elog "USE=savedconfig to customise the configuration." 52 elog "USE=savedconfig to customise the configuration."
55 elog "You can rename this file/directory to one of the following for" 53 elog "You can rename this file/directory to one of the following for"
76# ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/${CTARGET}/${CATEGORY}/${PN} 74# ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/${CTARGET}/${CATEGORY}/${PN}
77# ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/${CHOST}/${CATEGORY}/${PN} 75# ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/${CHOST}/${CATEGORY}/${PN}
78# ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/${CATEGORY}/${PN} 76# ${PORTAGE_CONFIGROOT}/etc/portage/savedconfig/${CATEGORY}/${PN}
79# @CODE 77# @CODE
80restore_config() { 78restore_config() {
81 use savedconfig || return
82
83 case ${EBUILD_PHASE} in 79 case ${EBUILD_PHASE} in
84 unpack|compile|configure|prepare) ;; 80 unpack|compile|configure|prepare) ;;
85 *) die "Bad package! restore_config only for use in src_{unpack,compile,configure,prepare} functions!" ;; 81 *) die "Bad package! restore_config only for use in src_{unpack,compile,configure,prepare} functions!" ;;
86 esac 82 esac
83
84 use savedconfig || return
85
87 local found check configfile 86 local found check configfile
88 local base=${PORTAGE_CONFIGROOT}/etc/portage/savedconfig 87 local base=${PORTAGE_CONFIGROOT}/etc/portage/savedconfig
89 for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}}; do 88 for check in {${CATEGORY}/${PF},${CATEGORY}/${P},${CATEGORY}/${PN}}; do
90 configfile=${base}/${CTARGET}/${check} 89 configfile=${base}/${CTARGET}/${check}
91 [[ -r ${configfile} ]] || configfile=${base}/${CHOST}/${check} 90 [[ -r ${configfile} ]] || configfile=${base}/${CHOST}/${check}

Legend:
Removed from v.1.15  
changed lines
  Added in v.1.19

  ViewVC Help
Powered by ViewVC 1.1.20