Hello community,
here is the log from the commit of package kiwi for openSUSE:Factory checked in at 2016-02-09 16:48:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kiwi (Old)
and /work/SRC/openSUSE:Factory/.kiwi.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kiwi"
Changes:
--------
--- /work/SRC/openSUSE:Factory/kiwi/kiwi.changes 2016-01-28 17:18:34.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.kiwi.new/kiwi.changes 2016-02-09 16:49:01.000000000 +0100
@@ -1,0 +2,117 @@
+Fri Feb 5 16:02:19 CET 2016 - ms@suse.de
+
+- v7.03.53 released
+
+-------------------------------------------------------------------
+Fri Feb 5 16:00:16 CET 2016 - ms@suse.de
+
+- Fixed disk bundler for install stick target
+
+ The bundler looked up the wrong extension. This fixes #542
+
+-------------------------------------------------------------------
+Fri Feb 5 15:43:12 CET 2016 - ms@suse.de
+
+- Preserve package cache only if it exists
+
+-------------------------------------------------------------------
+Fri Feb 5 09:56:08 CET 2016 - ms@suse.de
+
+- v7.03.52 released
+
+-------------------------------------------------------------------
+Fri Feb 5 09:44:31 CET 2016 - ms@suse.de
+
+- Fixed use of noglob shell option
+
+-------------------------------------------------------------------
+Wed Feb 3 15:55:40 CET 2016 - ms@suse.de
+
+- v7.03.51 released
+
+-------------------------------------------------------------------
+Wed Feb 3 12:27:11 CET 2016 - ms@suse.de
+
+- Fixed updateRootDeviceFstab
+
+ Support by-label mount entries for btrfs subvolumes
+ This fixes bnc#964474
+
+-------------------------------------------------------------------
+Tue Feb 2 16:33:03 CET 2016 - ms@suse.de
+
+- Don't add kernel filesystems to fstab
+
+ Systems with systemd which this kiwi version aims for, doesn't
+ need proc, sysfs, debugfs and friends to be part of the fstab
+ This fixes bnc#964472
+
+-------------------------------------------------------------------
+Mon Feb 1 09:02:57 CET 2016 - ms@suse.de
+
+- Update rhel6 template
+
+ Added Vagrantfile to build via dice
+
+-------------------------------------------------------------------
+Mon Feb 1 09:02:23 CET 2016 - ms@suse.de
+
+- Update rhel6 template
+
+ delete unused oracle linux build target
+
+-------------------------------------------------------------------
+Fri Jan 29 13:43:57 CET 2016 - ms@suse.de
+
+- v7.03.50 released
+
+-------------------------------------------------------------------
+Wed Jan 27 16:16:35 CET 2016 - ms@suse.de
+
+- Allow system to be installed on btrfs snapshot
+
+ This fixes (bnc#946648)
+
+-------------------------------------------------------------------
+Wed Jan 27 15:15:54 CET 2016 - ms@suse.de
+
+- Put kiwi_btrfs_root_is_snapshot to boot profile
+
+ This is related to (bnc#946648)
+
+-------------------------------------------------------------------
+Wed Jan 27 14:57:07 CET 2016 - ms@suse.de
+
+- Evaluate kiwi_btrfs_root_is_snapshot in boot code
+
+ If set it's required to mount the subvolumes like it is
+ done with lvm volumes. In addition this patch fixes the
+ update of the fstab file which has to contain an entry
+ for each subvolume excluding snapshots and the toplevel
+ This is related to (bnc#946648)
+
+-------------------------------------------------------------------
+Wed Jan 27 14:46:19 CET 2016 - ms@suse.de
+
+- Added get/set(er) for btrfs_root_is_snapshot attr
+
+ This is related to (bnc#946648)
+
+-------------------------------------------------------------------
+Wed Jan 27 14:40:42 CET 2016 - ms@suse.de
+
+- Added btrfs_root_is_snapshot attribute
+
+ This is related to (bnc#946648)
+
+-------------------------------------------------------------------
+Wed Jan 20 12:16:46 CET 2016 - ms@suse.de
+
+- Fixed pxe type setup for s390 SLE12-community-JeOS
+
+-------------------------------------------------------------------
+Wed Jan 20 12:01:47 CET 2016 - ms@suse.de
+
+- Added util-linux to SLE12-community-JeOS for s390
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kiwi.spec ++++++
--- /var/tmp/diff_new_pack.YqHHrK/_old 2016-02-09 16:49:03.000000000 +0100
+++ /var/tmp/diff_new_pack.YqHHrK/_new 2016-02-09 16:49:03.000000000 +0100
@@ -27,7 +27,7 @@
Name: kiwi
License: GPL-2.0
Group: System/Management
-Version: 7.03.49
+Version: 7.03.53
Provides: kiwi-schema = 6.2
Provides: kiwi-image:aci
Provides: kiwi-image:lxc
++++++ kiwi-docu.tar.bz2 ++++++
++++++ kiwi-repo.tar.bz2 ++++++
++++++ kiwi.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/.revision new/kiwi/.revision
--- old/kiwi/.revision 2015-12-17 09:28:28.000000000 +0100
+++ new/kiwi/.revision 2015-12-17 09:28:28.000000000 +0100
@@ -1 +1 @@
-93052054fee85c16a6b1236a5d23144c77542f3a
+46c29b431f98d68f651a34cc0059c3d689ebf874
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIBoot.pm new/kiwi/modules/KIWIBoot.pm
--- old/kiwi/modules/KIWIBoot.pm 2015-12-22 09:39:43.000000000 +0100
+++ new/kiwi/modules/KIWIBoot.pm 2016-01-29 11:53:03.000000000 +0100
@@ -301,6 +301,7 @@
$type{bootpartition} = $xmltype -> getBootPartition();
$type{bootpartsize} = $xmltype -> getBootPartitionSize();
$type{boottimeout} = $xmltype -> getBootTimeout();
+ $type{btrfs_root_is_snapshot} = $xmltype -> getBtrfsRootIsSnapshot();
$type{cmdline} = $xmltype -> getKernelCmdOpts();
$type{filesystem} = $xmltype -> getFilesystem();
$type{firmware} = $xmltype -> getFirmwareType();
@@ -2682,7 +2683,10 @@
if ($FSTypeRW eq 'btrfs') {
if (! KIWIGlobals
-> instance()
- -> setupBTRFSSubVolumes ($loopdir,\%lvmparts)) {
+ -> setupBTRFSSubVolumes (
+ $loopdir,\%lvmparts,
+ $type->{btrfs_root_is_snapshot},$root
+ )) {
$this -> cleanStack ();
return;
}
@@ -2702,13 +2706,12 @@
$kiwi -> info ("Copying system image tree on disk");
my $btrfs_sub_vol = '';
my $rsync_cmd = 'rsync -aHXA --one-file-system ';
- if (-e $loopdir.'/@') {
- # /.../
- # if we found the special btrfs subvolume named @ we
- # sync only this volume and not the other nested sub
- # volumes
- # ----
- $btrfs_sub_vol = '/@';
+ if (-e $loopdir.'/@/.snapshots') {
+ # sync target is a btrfs snapshot
+ $btrfs_sub_vol = '/@/.snapshots/1/snapshot/';
+ } elsif (-e $loopdir.'/@') {
+ # sync target is a btrfs toplevel
+ $btrfs_sub_vol = '/@/';
}
$status = KIWIQX::qxx (
$rsync_cmd.$system.'/ '.$loopdir.$btrfs_sub_vol.' 2>&1'
@@ -3722,9 +3725,28 @@
my $bootpath = '/boot';
if (($type ne 'iso') && (! $this->{needBootP})) {
if (($typeinfo->{filesystem} eq 'btrfs') && ($this->{sysdisk})) {
- my $volumes = $this->{sysdisk} -> getVolumes();
- if (($volumes) && (keys %{$volumes} > 0)) {
- $bootpath = '/@/boot';
+ my $volIDs = $this->{sysdisk} -> getVolumeIDs();
+ if ($volIDs) {
+ my $boot_is_on_volume = 0;
+ for my $id (@{$volIDs}) {
+ my $name = $this->{sysdisk} -> getVolumeName($id);
+ my $mount= $this->{sysdisk} -> getVolumeMountPoint($id);
+ my $path = $name;
+ if ($mount) {
+ $path = $mount;
+ }
+ $path =~ s/^\/+//;
+ if (($path eq 'boot') || ($path eq 'boot/grub2')) {
+ $boot_is_on_volume = 1;
+ last;
+ }
+ }
+ my $snapshot = $typeinfo->{btrfs_root_is_snapshot};
+ if ((! $boot_is_on_volume) && ($snapshot eq 'true')) {
+ $bootpath = '/@/.snapshots/1/snapshot/boot';
+ } else {
+ $bootpath = '/@/boot';
+ }
}
}
}
@@ -4423,10 +4445,30 @@
my $bootpath = '/boot';
if ((! $iso) && (! $this->{needBootP})) {
if (($type->{filesystem} eq 'btrfs') && ($this->{sysdisk})) {
- my $volumes = $this->{sysdisk} -> getVolumes();
- if (($volumes) && (keys %{$volumes} > 0)) {
- $bootpath = '/@/boot';
- $fodir = '/@/boot/grub2/themes/';
+ my $volIDs = $this->{sysdisk} -> getVolumeIDs();
+ if ($volIDs) {
+ my $boot_is_on_volume = 0;
+ for my $id (@{$volIDs}) {
+ my $name = $this->{sysdisk} -> getVolumeName($id);
+ my $mount= $this->{sysdisk} -> getVolumeMountPoint($id);
+ my $path = $name;
+ if ($mount) {
+ $path = $mount;
+ }
+ $path =~ s/^\/+//;
+ if (($path eq 'boot') || ($path eq 'boot/grub2')) {
+ $boot_is_on_volume = 1;
+ last;
+ }
+ }
+ my $snapshot = $type->{btrfs_root_is_snapshot};
+ if ((! $boot_is_on_volume) && ($snapshot eq 'true')) {
+ $bootpath = '/@/.snapshots/1/snapshot/boot';
+ $fodir = '/@/.snapshots/1/snapshot/boot/grub2/themes/';
+ } else {
+ $bootpath = '/@/boot';
+ $fodir = '/@/boot/grub2/themes/';
+ }
}
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIConfig.sh new/kiwi/modules/KIWIConfig.sh
--- old/kiwi/modules/KIWIConfig.sh 2015-12-22 09:39:43.000000000 +0100
+++ new/kiwi/modules/KIWIConfig.sh 2016-02-05 09:43:10.000000000 +0100
@@ -716,11 +716,13 @@
/base-system/ /.broken /.buildenv .bash_history /.kconfig /.profile
/etc/mtab
"
- set -o noglob on
+ # disable globbing
+ set -o noglob
for entry in $files;do
echo $entry >> .gitignore
done
- set -o noglob off
+ # enable globbing
+ set +o noglob
git init && git add -A && \
git commit -m "deployed"
popd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIGlobals.pm new/kiwi/modules/KIWIGlobals.pm
--- old/kiwi/modules/KIWIGlobals.pm 2016-01-14 12:53:24.000000000 +0100
+++ new/kiwi/modules/KIWIGlobals.pm 2016-02-05 16:02:11.000000000 +0100
@@ -992,7 +992,10 @@
my $this = shift;
my $path = shift;
my $vols = shift;
+ my $snapshot = shift;
+ my $device = shift;
my $kiwi = $this->{kiwi};
+ my @UmountStack = @{$this->{UmountStack}};
my %phash = ();
my @paths = ();
if ($vols) {
@@ -1013,24 +1016,30 @@
}
}
if (! %phash) {
- return $path;
+ return $this;
}
$kiwi -> info ("Creating btrfs pool\n");
my $data = KIWIQX::qxx ('btrfs subvolume create '.$path.'/@ 2>&1');
my $code = $? >> 8;
- if ($code == 0) {
- my $rootID=0;
- $data = KIWIQX::qxx ("btrfs subvolume list $path 2>&1");
- if ($data =~ /^ID (\d+) /) {
- $rootID=$1;
+ if ($snapshot eq 'true') {
+ if ($code == 0) {
+ $data = KIWIQX::qxx (
+ 'btrfs subvolume create '.$path.'/@/.snapshots 2>&1'
+ );
+ $code = $? >> 8;
}
- if ($rootID) {
+ if ($code == 0) {
$data = KIWIQX::qxx (
- "btrfs subvolume set-default $rootID $path 2>&1"
+ 'mkdir -p '.$path.'/@/.snapshots/1 2>&1'
+ );
+ $code = $? >> 8;
+ }
+ if ($code == 0) {
+ my $snapshot_path = "$path/@/.snapshots/1/snapshot";
+ $data = KIWIQX::qxx (
+ "btrfs subvolume snapshot $path/@ $snapshot_path 2>&1"
);
$code = $? >> 8;
- } else {
- $code = 1;
}
}
if ($code == 0) {
@@ -1050,6 +1059,19 @@
);
$code = $? >> 8;
}
+ if ($snapshot eq 'true') {
+ my $snapshot_path = "$path/@/.snapshots/1/snapshot";
+ my $subvol = "-o subvol=@/$vol";
+ KIWIQX::qxx ("mkdir -p $snapshot_path/$vol");
+ $data = KIWIQX::qxx (
+ "mount $device $snapshot_path/$vol $subvol 2>&1"
+ );
+ $code = $? >> 8;
+ if ($code == 0) {
+ push @UmountStack,"umount $snapshot_path/$vol";
+ $this->{UmountStack} = \@UmountStack;
+ }
+ }
if ($code == 0) {
$kiwi -> done();
} else {
@@ -1059,13 +1081,59 @@
}
}
}
+ if ($code == 0) {
+ if ($snapshot eq 'true') {
+ $this -> setupBtrfsDefaultVolume($path, '@/.snapshots/1/snapshot');
+ } else {
+ $this -> setupBtrfsDefaultVolume($path, '@');
+ }
+ }
if ($code != 0) {
$kiwi -> error ("Failed to create btrfs subvolume: $data\n");
$kiwi -> failed();
return;
}
- $path.='/@';
- return $path;
+ return $this;
+}
+
+#==========================================
+# setupBtrfsDefaultVolume
+#------------------------------------------
+sub setupBtrfsDefaultVolume {
+ # /.../
+ # set default volume for btrfs tree
+ # ----
+ my $this = shift;
+ my $path = shift;
+ my $default_volume = shift;
+ my $kiwi = $this->{kiwi};
+ if (! $default_volume) {
+ $default_volume = '@';
+ }
+ $kiwi -> info("Setting btrfs default volume to: $default_volume\n");
+ my $rootID=0;
+ my $data = KIWIQX::qxx ("btrfs subvolume list $path 2>&1");
+ my $code = $? >> 8;
+ if ($code == 0) {
+ foreach my $line (split('\n', $data)) {
+ my @elements = split(' ', $line);
+ my $volume_path = $elements[8];
+ my $volume_id = $elements[1];
+ if ($volume_path eq $default_volume) {
+ $rootID = $volume_id;
+ last;
+ }
+ }
+ if ($rootID) {
+ $data = KIWIQX::qxx (
+ "btrfs subvolume set-default $rootID $path 2>&1"
+ );
+ $code = $? >> 8;
+ } else {
+ $code = 1;
+ }
+ }
+ return $code;
}
#==========================================
@@ -1933,7 +2001,7 @@
# Globals (generic)
#------------------------------------------
my %data;
- $data{Version} = "7.03.49";
+ $data{Version} = "7.03.53";
$data{Publisher} = "SUSE LINUX GmbH";
$data{Preparer} = "KIWI - http://opensuse.github.com/kiwi";
$data{ConfigName} = "config.xml";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIImage.pm new/kiwi/modules/KIWIImage.pm
--- old/kiwi/modules/KIWIImage.pm 2015-11-30 12:44:35.000000000 +0100
+++ new/kiwi/modules/KIWIImage.pm 2016-01-29 11:53:03.000000000 +0100
@@ -3445,7 +3445,7 @@
if (($fstype) && ($fstype eq 'btrfs')) {
$extend = KIWIGlobals
-> instance()
- -> setupBTRFSSubVolumes ($extend);
+ -> setupBTRFSSubVolumes ($extend,undef,'false',$device);
if (! $extend) {
$this -> cleanLuks();
return;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIImageCreator.pm new/kiwi/modules/KIWIImageCreator.pm
--- old/kiwi/modules/KIWIImageCreator.pm 2015-09-21 16:23:18.000000000 +0200
+++ new/kiwi/modules/KIWIImageCreator.pm 2016-01-29 11:53:02.000000000 +0100
@@ -2119,6 +2119,15 @@
$kiwi -> done();
}
#==========================================
+ # btrfs_root_is_snapshot
+ #------------------------------------------
+ my $btrfs_root_is_snapshot = $systemType -> getBtrfsRootIsSnapshot();
+ if ($btrfs_root_is_snapshot) {
+ $kiwi -> info ("--> btrfs_root_is_snapshot: $btrfs_root_is_snapshot");
+ $bootType -> setBtrfsRootIsSnapshot ($btrfs_root_is_snapshot);
+ $kiwi -> done();
+ }
+ #==========================================
# fsmountoptions
#------------------------------------------
my $fsmountoptions = $systemType -> getFSMountOptions();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWILinuxRC.sh new/kiwi/modules/KIWILinuxRC.sh
--- old/kiwi/modules/KIWILinuxRC.sh 2016-01-14 12:50:28.000000000 +0100
+++ new/kiwi/modules/KIWILinuxRC.sh 2016-02-03 12:26:58.000000000 +0100
@@ -3500,6 +3500,28 @@
echo "USERCONTROL='no'" >> $niface
}
#======================================
+# getBtrfsSubVolumes
+#--------------------------------------
+function getBtrfsSubVolumes {
+ local IFS=$IFS_ORIG
+ local prefix=$1
+ btrfs subvol list $prefix | \
+ grep -v .snapshots/ | grep -v @$ | cut -f9 -d ' '
+}
+#======================================
+# mountBtrfsSubVolumes
+#--------------------------------------
+function mountBtrfsSubVolumes {
+ local IFS=$IFS_ORIG
+ local mountDevice=$1
+ local prefix=$2
+ local syspath
+ for subvol in $(getBtrfsSubVolumes "$prefix"); do
+ syspath=$(echo $subvol | tr -d @)
+ mount $mountDevice $prefix/$syspath -o subvol=$subvol
+ done
+}
+#======================================
# setupDefaultFstab
#--------------------------------------
function setupDefaultFstab {
@@ -3507,21 +3529,35 @@
# Update or create new /etc/fstab file with the default entries
# ----
local IFS=$IFS_ORIG
- local prefix=$1
- local nfstab=$prefix/etc/fstab
- mkdir -p $prefix/etc
- grep -q devpts $nfstab || \
- echo "devpts /dev/pts devpts mode=0620,gid=5 0 0" >> $nfstab
- grep -q proc $nfstab || \
- echo "proc /proc proc defaults 0 0" >> $nfstab
- grep -q sysfs $nfstab || \
- echo "sysfs /sys sysfs noauto 0 0" >> $nfstab
- grep -q debugfs $nfstab || test -e /sys/kernel/debug && \
- echo "debugfs /sys/kernel/debug debugfs noauto 0 0" >> $nfstab
- grep -q usbfs $nfstab || test -e /proc/bus/usb && \
- echo "usbfs /proc/bus/usb usbfs noauto 0 0" >> $nfstab
- grep -q /run $nfstab || test -e /run && \
- echo "tmpfs /run tmpfs noauto 0 0" >> $nfstab
+ local prefix=/mnt
+ local config_tmp=$1
+ local nfstab=$config_tmp/etc/fstab
+ mkdir -p $config_tmp/etc
+ if [ -e "$prefix/etc/fstab" ];then
+ cp $prefix/etc/fstab $config_tmp/etc
+ else
+ touch $config_tmp/etc/fstab
+ fi
+ if [ ! -e "$prefix/bin/systemd" ];then
+ grep -q devpts $nfstab || \
+ echo "devpts /dev/pts devpts mode=0620,gid=5 0 0" \
+ >> $nfstab
+ grep -q proc $nfstab || \
+ echo "proc /proc proc defaults 0 0" \
+ >> $nfstab
+ grep -q sysfs $nfstab || \
+ echo "sysfs /sys sysfs noauto 0 0" \
+ >> $nfstab
+ grep -q debugfs $nfstab || test -e /sys/kernel/debug && \
+ echo "debugfs /sys/kernel/debug debugfs noauto 0 0" \
+ >> $nfstab
+ grep -q usbfs $nfstab || test -e /proc/bus/usb && \
+ echo "usbfs /proc/bus/usb usbfs noauto 0 0" \
+ >> $nfstab
+ grep -q /run $nfstab || test -e /run && \
+ echo "tmpfs /run tmpfs noauto 0 0" \
+ >> $nfstab
+ fi
}
#======================================
# updateRootDeviceFstab
@@ -3537,6 +3573,10 @@
local nfstab=$config_tmp/etc/fstab
local diskByID=$(getDiskID $rdev)
local opts=defaults
+ local devicepersistency="by-uuid"
+ if [ ! -z "$kiwi_devicepersistency" ];then
+ devicepersistency=$kiwi_devicepersistency
+ fi
#======================================
# check for custom options
#--------------------------------------
@@ -3570,6 +3610,7 @@
local volpath
local mpoint
local mppath
+ local syspath
for i in $(cat /.profile | grep -E 'kiwi_LVM_|kiwi_allFreeVolume');do
variable=$(echo $i|cut -f1 -d=)
volume=$(echo $i| cut -f3- -d_ | cut -f1 -d=)
@@ -3589,10 +3630,17 @@
fi
done
elif [ "$FSTYPE" = "btrfs" ];then
- local fsuuid=$(blkid $rdev -s UUID -o value)
- for subvol in $(btrfs subvol list $prefix |grep -v @ |cut -f9 -d' ');do
- echo "UUID=$fsuuid /$subvol btrfs subvol=@/$subvol 0 0" >> $nfstab
- done
+ if [ "$kiwi_btrfs_root_is_snapshot" = "true" ];then
+ if [ $devicepersistency = "by-label" ];then
+ local device="LABEL=$(blkid $rdev -s LABEL -o value)"
+ else
+ local device="UUID=$(blkid $rdev -s UUID -o value)"
+ fi
+ for subvol in $(getBtrfsSubVolumes "$prefix"); do
+ syspath=$(echo $subvol | tr -d @)
+ echo "$device $syspath btrfs subvol=$subvol 0 0" >> $nfstab
+ done
+ fi
fi
}
#======================================
@@ -6957,6 +7005,10 @@
kiwiMount "/dev/$kiwi_lvmgroup/$volume" "$prefix/$mpoint"
fi
done
+ elif [ "$FSTYPE" = "btrfs" ];then
+ if [ "$kiwi_btrfs_root_is_snapshot" = "true" ];then
+ mountBtrfsSubVolumes $mountDevice $prefix
+ fi
fi
return $?
}
@@ -10010,8 +10062,15 @@
local mpoint
local mppath
local volbase
+ local top=@
btrfs subvolume create $root/@ || return
- local rootid=$(btrfs subvolume list $root | cut -f2 -d ' ')
+ if [ "$kiwi_btrfs_root_is_snapshot" = "true" ];then
+ btrfs subvolume create $root/.snapshots
+ btrfs subvolume create $root/.snapshots/1
+ btrfs subvolume snapshot $root/@ $root/.snapshots/1/snapshot
+ top=.snapshots/1/snapshot
+ fi
+ local rootid=$(btrfs subvolume list $root | grep $top | cut -f2 -d ' ')
btrfs subvolume set-default $rootid $root || return
for i in $(cat /.profile | grep -E 'kiwi_LVM_|kiwi_allFreeVolume');do
variable=$(echo $i|cut -f1 -d=)
@@ -10029,6 +10088,9 @@
btrfs subvolume create $root/@/$mpoint || return
done
umount $root && mount $imageRootDevice $root
+ if [ "$kiwi_btrfs_root_is_snapshot" = "true" ];then
+ mountBtrfsSubVolumes $imageRootDevice $root
+ fi
}
#======================================
# restoreLVMMetadata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIManagerZypper.pm new/kiwi/modules/KIWIManagerZypper.pm
--- old/kiwi/modules/KIWIManagerZypper.pm 2015-09-10 15:20:52.000000000 +0200
+++ new/kiwi/modules/KIWIManagerZypper.pm 2016-02-05 15:42:08.000000000 +0100
@@ -480,10 +480,12 @@
#
my $this = shift;
my $kiwi = $this->{kiwi};
- $kiwi -> loginfo("Restoring Zypper package cache");
- KIWIQX::qxx(
- "mv /var/cache/kiwi/packs /var/cache/kiwi/packages &>/dev/null"
- );
+ if (-e '/var/cache/kiwi/packs') {
+ $kiwi -> loginfo("Restoring Zypper package cache");
+ KIWIQX::qxx(
+ "mv /var/cache/kiwi/packs /var/cache/kiwi/packages &>/dev/null"
+ );
+ }
return $this;
}
@@ -499,10 +501,12 @@
# ---
my $this = shift;
my $kiwi = $this->{kiwi};
- $kiwi -> loginfo("Preserving Zypper package cache");
- KIWIQX::qxx(
- "mv /var/cache/kiwi/packages /var/cache/kiwi/packs"
- );
+ if (-e '/var/cache/kiwi/packages') {
+ $kiwi -> loginfo("Preserving Zypper package cache");
+ KIWIQX::qxx(
+ "mv /var/cache/kiwi/packages /var/cache/kiwi/packs"
+ );
+ }
return $this;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIProfileFile.pm new/kiwi/modules/KIWIProfileFile.pm
--- old/kiwi/modules/KIWIProfileFile.pm 2015-10-19 12:55:49.000000000 +0200
+++ new/kiwi/modules/KIWIProfileFile.pm 2016-01-29 11:53:02.000000000 +0100
@@ -64,6 +64,7 @@
kiwi_bootprofile
kiwi_bootkernel
kiwi_boot_timeout
+ kiwi_btrfs_root_is_snapshot
kiwi_cmdline
kiwi_compressed
kiwi_cpio_name
@@ -380,6 +381,8 @@
$type -> getCompressed();
$data{kiwi_boot_timeout} =
$type -> getBootTimeout();
+ $data{kiwi_btrfs_root_is_snapshot} =
+ $type -> getBtrfsRootIsSnapshot();
$data{kiwi_wwid_wait_timeout} =
$type -> getWWIDWaitTimeout();
$data{kiwi_hybrid} =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWIResult.pm new/kiwi/modules/KIWIResult.pm
--- old/kiwi/modules/KIWIResult.pm 2015-11-17 12:53:24.000000000 +0100
+++ new/kiwi/modules/KIWIResult.pm 2016-02-05 15:58:24.000000000 +0100
@@ -409,7 +409,7 @@
}
if ($buildinfo->exists('main','install.stick')) {
$install = 1;
- $ret |= $this -> __bundleExtension ('install.raw');
+ $ret |= $this -> __bundleExtension ('raw.install.raw');
}
if ($buildinfo->exists('main','install.pxe')) {
$install = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWISchema.rnc new/kiwi/modules/KIWISchema.rnc
--- old/kiwi/modules/KIWISchema.rnc 2016-01-14 12:50:28.000000000 +0100
+++ new/kiwi/modules/KIWISchema.rnc 2016-01-29 11:36:30.000000000 +0100
@@ -1636,6 +1636,11 @@
"extlinux" | "grub" | "grub2" | "syslinux" |
"zipl" | "yaboot" | "uboot" | "berryboot" | "grub2_s390x_emu"
}
+ k.type.btrfs_root_is_snapshot =
+ ## Tell kiwi to install the system into a btrfs snapshot
+ ## The snapshot layout is compatible with the snapper management
+ ## toolkit. By default no snapshots are used
+ attribute btrfs_root_is_snapshot { xsd:boolean }
k.type.target_blocksize =
## Specifies the image blocksize in bytes which has to match
## the logical (SSZ) blocksize of the target storage device.
@@ -1876,6 +1881,7 @@
k.type.bootpartsize.attribute? &
k.type.bootprofile.attribute? &
k.type.boottimeout.attribute? &
+ k.type.btrfs_root_is_snapshot? &
k.type.checkprebuilt.attribute? &
k.type.compressed.attribute? &
k.type.container.attribute? &
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/kiwi/modules/KIWISchema.rng new/kiwi/modules/KIWISchema.rng
--- old/kiwi/modules/KIWISchema.rng 2016-01-14 12:50:28.000000000 +0100
+++ new/kiwi/modules/KIWISchema.rng 2016-01-29 11:36:30.000000000 +0100
@@ -2145,6 +2145,14 @@
</choice>
</attribute>
</define>
+ <define name="k.type.btrfs_root_is_snapshot">
+ <attribute name="btrfs_root_is_snapshot">
+