Hello community,

here is the log from the commit of package grub2 for openSUSE:Factory checked 
in at 2014-02-11 10:55:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/grub2 (Old)
 and      /work/SRC/openSUSE:Factory/.grub2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "grub2"

Changes:
--------
--- /work/SRC/openSUSE:Factory/grub2/grub2.changes      2014-02-06 
09:17:08.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.grub2.new/grub2.changes 2014-02-11 
10:55:20.000000000 +0100
@@ -1,0 +2,10 @@
+Wed Feb  5 04:33:55 UTC 2014 - [email protected]
+
+- add grub2-snapper-plugin.sh (fate#316232)
+  * grub2's snapper plugin for advanced btrfs snapshot menu management
+  * package as grub2-snapper-plugin.noarch
+- refresh 0002-script-create-menus-for-btrfs-snapshot.patch
+  * when booting btrfs snapshots disabled, deleting snapshot master config
+    if it's not customized
+
+-------------------------------------------------------------------

New:
----
  grub2-snapper-plugin.sh

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ grub2.spec ++++++
--- /var/tmp/diff_new_pack.aAOK6c/_old  2014-02-11 10:55:21.000000000 +0100
+++ /var/tmp/diff_new_pack.aAOK6c/_new  2014-02-11 10:55:21.000000000 +0100
@@ -113,6 +113,7 @@
 Source7:        20_memtest86+
 Source10:       openSUSE-UEFI-CA-Certificate.crt
 Source11:       SLES-UEFI-CA-Certificate.crt
+Source12:       grub2-snapper-plugin.sh
 Source1000:     PATCH_POLICY
 Patch1:         rename-grub-info-file-to-grub2.patch
 Patch2:         grub2-linux.patch
@@ -233,6 +234,17 @@
 
 %endif
 
+%package snapper-plugin
+
+Summary:        Grub2's snapper plugin
+Group:          System/Fhs
+Requires:       %{name} = %{version}-%{release}
+Requires:       libxml2-tools
+BuildArch:      noarch
+
+%description snapper-plugin
+Grub2's snapper plugin for advanced btrfs snapshot boot menu management
+
 %prep
 # We create (if we build for efi) two copies of the sources in the Builddir
 %setup -q -n grub-%{version} -a 5
@@ -458,6 +470,7 @@
 # Defaults
 install -m 644 -D %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/default/grub
 install -m 755 -D %{SOURCE6} $RPM_BUILD_ROOT%{_sbindir}/grub2-once
+install -m 755 -D %{SOURCE12} $RPM_BUILD_ROOT%{_libdir}/snapper/plugins/grub
 
 %find_lang %{name}
 %fdupes %buildroot%{_bindir}
@@ -726,4 +739,10 @@
 %endif
 %endif
 
+%files snapper-plugin
+%defattr(-,root,root,-)
+%dir %{_libdir}/snapper
+%dir %{_libdir}/snapper/plugins
+%{_libdir}/snapper/plugins/grub
+
 %changelog

++++++ 0002-script-create-menus-for-btrfs-snapshot.patch ++++++
--- /var/tmp/diff_new_pack.aAOK6c/_old  2014-02-11 10:55:21.000000000 +0100
+++ /var/tmp/diff_new_pack.aAOK6c/_new  2014-02-11 10:55:21.000000000 +0100
@@ -20,6 +20,10 @@
 * Create missing slave config in /.snapshots/<num>/
 * Prefix with SUSE_ for related options
 
+v3:
+* When booting btrfs snapshots disabled, deleting snapshot master config
+  if it's not customized
+
 Signed-off-by: Michael Chang <[email protected]>
 
 Index: grub-2.02~beta2/Makefile.util.def
@@ -60,7 +64,7 @@
 ===================================================================
 --- /dev/null
 +++ grub-2.02~beta2/util/grub.d/80_btrfs_snapshot.in
-@@ -0,0 +1,171 @@
+@@ -0,0 +1,174 @@
 +#! /bin/sh
 +set -e
 +
@@ -122,7 +126,10 @@
 +# specify SUSE_DISABLE_BOOTING_SNAPSHOT=false the update the config
 +if [ "x${SUSE_DISABLE_BOOTING_SNAPSHOT}" != "xfalse" ]; then
 +  rm -f "/${slave_cfg}"
-+  rm -f "${master_snapshot_cfg}"
++# Delete snapshot master config if not customized
++  if [ "x${SUSE_ENABLE_CUSTOM_SNAPSHOT_SUBMENU}" != "xtrue" ]; then
++    rm -f "${master_snapshot_cfg}"
++  fi
 +  exit 0
 +fi
 +

++++++ grub2-snapper-plugin.sh ++++++
#!/bin/sh
set -e

# Copyright (C) 2006,2007,2008,2009,2010  Free Software Foundation, Inc.
#
# GRUB 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.
#
# GRUB 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 GRUB.  If not, see <http://www.gnu.org/licenses/>.

grub_mkconfig="/usr/sbin/grub2-mkconfig"
grub_mkrelpath="/usr/bin/grub2-mkrelpath"
grub_setting="/etc/default/grub"
grub_cfg="/boot/grub2/grub.cfg"
grub_snapshot_cfg="/boot/grub2/snapshot_submenu.cfg"

snapshot_submenu_name="snapshot_submenu.cfg"
snapshot_menuentry_name="snapshot_menuentry.cfg"
snapshot_menuentry_cfg="boot/grub2/${snapshot_menuentry_name}"

rel_root=`"$grub_mkrelpath" /`

snapshot_submenu_refresh () {

for s_dir in /.snapshots/*; do

  snapshot="${s_dir}/snapshot"
  snapper_cfg="${s_dir}/${snapshot_submenu_name}"
  
  if [ ! -d "$snapshot" ]; then
    rm -f "${snapper_cfg}"
    rm -f "${s_dir}/${snapshot_menuentry_name}"
    continue
  fi

  cfgs="${s_dir}/${snapshot_menuentry_name} 
${snapshot}/${snapshot_menuentry_cfg}"
  date=`xmllint --xpath '/snapshot/date/text()' "${s_dir}/info.xml" || echo ""`

  cat <<EOF > "${snapper_cfg}.new"
  
  for x in $cfgs; do
    snap="${rel_root}${snapshot}"
    snap_cfg="${rel_root}\$x"

    if [ -f "\$snap_cfg" ]; then
      snapshot_found=true
        submenu "$date" "\$snap" "\$snap_cfg" {
                set subvol="\$2"
                export subvol
                source "\$3"
        }
      break
    fi
  done

EOF
 
  if grub2-script-check "${snapper_cfg}.new"; then
    mv -f "${snapper_cfg}.new" "${snapper_cfg}"
  fi

done

}

grub_snapshot_cfg_refresh () {

: > "${grub_snapshot_cfg}.tmp"
for s_dir in /.snapshots/*; do

  snapshot="${s_dir}/snapshot"
  snapper_cfg="${s_dir}/${snapshot_submenu_name}"

  if [ -f "${snapper_cfg}" ]; then
    echo "source ${rel_root}${snapper_cfg}" >>"${grub_snapshot_cfg}.tmp"
    continue
  fi

done

cat <<EOF >"${grub_snapshot_cfg}.new"
submenu "Bootable snapshots" { 
`sort -V "${grub_snapshot_cfg}.tmp"` 
  if [ x\$snapshot_found != xtrue ]; then
        submenu "Not Found" {true}
  fi
}
EOF

if grub2-script-check "${grub_snapshot_cfg}.new"; then
  mv -f "${grub_snapshot_cfg}.new" "${grub_snapshot_cfg}"
fi

}


snapshot_submenu_clean () {

  for s_dir in /.snapshots/*; do

    snapshot="${s_dir}/snapshot"
    snapper_cfg="${s_dir}/${snapshot_submenu_name}"

    if [ -f "$snapper_cfg" ]; then
      rm -f "$snapper_cfg"
    fi

  done
}

set_grub_setting () {

  name=$1
  val=$2

  if grep -q "$name" "$grub_setting"; then
    sed -i -e "s/.*\($name\)=.*/\1=$val/" "$grub_setting"
  else
    echo "$name=$val" >> "$grub_setting"
  fi
}

update_grub_cfg () {

  "$grub_mkconfig" -o "$grub_cfg"
}

# Check the arguments.
while test $# -gt 0
do
  option=$1
  shift

  case "$option" in
  -e | --enable)
  opt_enable=true
  ;;
  -d | --disable)
  opt_enable=false
  ;;
  -r | --refresh)
  opt_refresh=true
  ;;
  -c | --clean)
  opt_clean=true
  ;;
  -*)
  ;;
  esac
done

if [ "x${opt_enable}" = "xtrue" ]; then

  set_grub_setting SUSE_DISABLE_BOOTING_SNAPSHOT false
  set_grub_setting SUSE_ENABLE_CUSTOM_SNAPSHOT_SUBMENU true
  update_grub_cfg
  snapshot_submenu_refresh
  grub_snapshot_cfg_refresh

elif [ "x${opt_enable}" = "xfalse" ]; then

  snapshot_submenu_clean
  set_grub_setting SUSE_DISABLE_BOOTING_SNAPSHOT true
  set_grub_setting SUSE_ENABLE_CUSTOM_SNAPSHOT_SUBMENU false 
  update_grub_cfg

fi

if [ x${opt_refresh} = "xtrue" ]; then

  snapshot_submenu_refresh
  grub_snapshot_cfg_refresh

fi

if [ x${opt_clean} = "xtrue" ]; then

  snapshot_submenu_clean
  grub_snapshot_cfg_refresh

fi
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to