Re: custom persistence for live-config components
Hi
This probably got lost in the noise. It would be nice to get some
feedback about the proposed patch below. I would still be really
interested to work on this as this is a real painpoint for us. But if
there is no chance of getting this upstream, I'm not very keen on
working on this.
Gaudenz
Gaudenz Steinlin <gaudenz@debian.org> writes:
> Hi
>
> Attached is a prototype patch to implement custom persistence for
> live-config components. Only one component is converted to this to show
> how it's intended to work. The patch is not yet tested. I'd like to have
> some feeback before going on and converting all the components and
> testing.
>
> Gaudenz
> From fe609f3c78afe898c6c9c4690a87de2543f0563c Mon Sep 17 00:00:00 2001
> From: Gaudenz Steinlin <gaudenz@debian.org>
> Date: Sat, 28 Mar 2015 14:47:40 +0100
> Subject: [PATCH] Custom persistence for components
>
> Persistence can be enabled/disabled with the parameters
> persistent-components and nonpersistent-components. These parameters
> take a comma separated list of components. Each components can define
> it's default setting in case it's not listed in one of these parameters.
> ---
> components/0010-debconf | 8 +++++---
> components/functions.sh | 38 ++++++++++++++++++++++++++++++++++++++
> frontend/live-config | 12 ++++++++----
> 3 files changed, 51 insertions(+), 7 deletions(-)
> create mode 100644 components/functions.sh
>
> diff --git a/components/0010-debconf b/components/0010-debconf
> index cc70e46..8b02254 100755
> --- a/components/0010-debconf
> +++ b/components/0010-debconf
> @@ -10,6 +10,8 @@
>
> #set -e
>
> +. /lib/live/config/functions.sh
> +
> Cmdline ()
> {
> # Reading kernel command line
> @@ -27,7 +29,7 @@ Init ()
> {
> # Checking if package is installed or already configured
> if [ ! -e /var/lib/dpkg/info/debconf.list ] || \
> - [ -e /var/lib/live/config/debconf ]
> + check_statefile
> then
> exit 0
> fi
> @@ -84,8 +86,8 @@ Config ()
> rm -f "${_TMPFILE}"
> done
>
> - # Creating state file
> - touch /var/lib/live/config/debconf
> + # Creating state file if requested
> + create_statefile "false"
> }
>
> Cmdline
> diff --git a/components/functions.sh b/components/functions.sh
> new file mode 100644
> index 0000000..f8141f5
> --- /dev/null
> +++ b/components/functions.sh
> @@ -0,0 +1,38 @@
> +
> +_SCRIPT="$(readlink -f ${0})"
> +_COMPONENT_NAME="${_SCRIPT#/lib/live/config/????-}"
> +
> +create_statefile() {
> +
> + # set default value
> + _CREATE="$1"
> +
> + if echo "${LIVE_CONFIG_PERSISTENT_COMPONENTS}" | grep -q "${_COMPONENT_NAME}"
> + then
> + _CREATE="true"
> + elif echo "${LIVE_CONFIG_NONPERSISTENT_COMPONENTS}" | grep -q "${_COMPONENT_NAME}"
> + then
> + _CREATE="false"
> + fi
> +
> + # create statefile if requested
> + if [ ${_CREATE} = "true" ]
> + then
> + touch /var/lib/live/config/${_COMPONENT_NAME}
> + fi
> +}
> +
> +check_statefile() {
> +
> + # if the component is listed in LIVE_CONFIG_NONPERSISTENT_COMPONENTS the statefile
> + # is ignored
> + if echo "${LIVE_CONFIG_NONPERSISTENT_COMPONENTS}" | grep -q "${_COMPONENT_NAME}"
> + then
> + return 1
> + elif [ -e /var/lib/live/config/${_COMPONENT_NAME} ]
> + then
> + return 0
> + else
> + return 1
> + fi
> +}
> diff --git a/frontend/live-config b/frontend/live-config
> index ee9dfd1..6d01615 100755
> --- a/frontend/live-config
> +++ b/frontend/live-config
> @@ -38,8 +38,6 @@ _IP_SEPARATOR="-"
> _PROC_OPTIONS="onodev,noexec,nosuid"
> export _IP_SEPARATOR _PROC_OPTIONS
>
> -_COMPONENTS="$(ls /lib/live/config/*)"
> -
> # Reading configuration files from filesystem and live-media
> for _FILE in /etc/live/config.conf /etc/live/config/* \
> /lib/live/mount/medium/live/config.conf /lib/live/mount/medium/live/config/*
> @@ -67,14 +65,14 @@ Cmdline ()
> # Run all components
> LIVE_CONFIG_COMPONENTS=""
> LIVE_CONFIG_NOCOMPONENTS=""
> - _COMPONENTS="$(ls /lib/live/config/*)"
> + _COMPONENTS="$(ls /lib/live/config/????-*)"
> ;;
>
> live-config.nocomponents=*|nocomponents=*)
> # Don't run requested components
> LIVE_CONFIG_COMPONENTS=""
> LIVE_CONFIG_NOCOMPONENTS="${_PARAMETER#*nocomponents=}"
> - _COMPONENTS="$(ls /lib/live/config/*)"
> + _COMPONENTS="$(ls /lib/live/config/????-*)"
> ;;
>
> live-config.nocomponents|nocomponents)
> @@ -83,6 +81,12 @@ Cmdline ()
> LIVE_CONFIG_NOCOMPONENTS=""
> _COMPONENTS=""
> ;;
> + live-config.persistent-components=*|persistent-components=*)
> + export LIVE_CONFIG_PERSISTENT_COMPONENTS="${_PARAMETER#*persistent-components=*}"
> + ;;
> + live-config.nonpersistent-components=*|nonpersistent-components=*)
> + export LIVE_CONFIG_NONPERSISTENT_COMPONENTS="${_PARAMETER#*nonpersistent-components=}"
> + ;;
>
> # Shortcuts
> live-config.noroot|noroot)
> --
> 2.1.4
Reply to: