Compare commits

...

19 Commits

Author SHA1 Message Date
Marek Marczykowski-Górecki
0ec125b967
anaconda 25.20.9-16, blivet 2.1.11-6 2019-10-31 21:55:35 +01:00
Marek Marczykowski-Górecki
91728177c2
anaconda: fix required disk space reporting in reclaim space dialog
Blivet (storage library) reserve 20% of volume group space if there is
thin pool created. Include it in required space reporting.

QubesOS/qubes-issues#5345
2019-10-25 05:11:38 +02:00
Marek Marczykowski-Górecki
12cc054a74
blivet: do not mount pre-existing partitions and do not detect OS there
This operation may be harmfull in many ways:
 - may unintentionally modify a disk not selected as installation target
   (mounting even read only replays journal for example)
 - if previous system was compromised, it may try to exploit some of the
   parsing code (filesystem driver etc) to survive across
   re-installation

QubesOS/qubes-issues#2835
2019-10-25 05:11:38 +02:00
Marek Marczykowski-Górecki
1abde9cad3
anaconda: do not drop /boot from automatic partitioning
Create /boot even on UEFI systems, to help migrating to R4.1 with
grub2-efi (needing access to unencrypted /boot).

QubesOS/qubes-issues#4902
2019-10-25 05:11:37 +02:00
Marek Marczykowski-Górecki
40a1574500
blivet: Double default LVM thin pool metadata size
The default is too small in Qubes use case.

Fixes QubesOS/qubes-issues#3243
2019-10-25 05:11:07 +02:00
Marek Marczykowski-Górecki
7c2d9b37e3
blivet: update to 2.1.11
Revert few changes to make it compatible with fc25 (libblockdev-0.9,
anaconda-25). And manually backport get_thpool_meta_size function not
present in libblockdev-0.9. Besides that, drop patches already included
in this release.

This update, among other things, limit fsck calls on partitions not
selected for install/resize.

Tarball generated from upstream git checkout of
ee16c10d48724590aac5e0382ebc540195dc712d ("New version 2.1.11") by
calling "make archive".

QubesOS/qubes-issues#2835
2019-10-25 05:11:05 +02:00
Frédéric Pierret (fepitre)
70d4252d91
travis: switch to bionic
QubesOS/qubes-issues#4613

(cherry picked from commit 376ce9ad5c)
2019-10-20 04:00:22 +02:00
Marek Marczykowski-Górecki
a089792060
anaconda 25.20.9-15, lorax-templates-qubes 4.0.6, qubes-anaconda-addon 4.0.10 2019-06-28 15:44:07 +02:00
Marek Marczykowski-Górecki
3541eda275
comps: update debian template description
It should be "Debian 10"

QubesOS/qubes-issues#5108
2019-06-26 17:13:59 +02:00
Marek Marczykowski-Górecki
533e8e75bd
anaconda: add plymouth.ignore-serial-consoles boot option by default
QubesOS/qubes-issues#3849
2019-06-25 20:02:22 +02:00
Marek Marczykowski-Górecki
f3f7ae7a87
lorax-templates-qubes: add plymouth.ignore-serial-consoles kernel option
to non-verbose boot options. This will avoid automatic plymouth switch
to "details" view - retaining nice graphical progress. And also will be
copied to the target system, with the same effect - nice graphical boot.

QubesOS/qubes-issues#3849
2019-06-25 19:52:55 +02:00
Marek Marczykowski-Górecki
afd1fe2d41
qubes-anaconda-addon: update default template
QubesOS/qubes-issues#5108
2019-06-24 21:17:01 +02:00
Marek Marczykowski-Górecki
60af84f159
comps: update template versions for R4.0.2
- debian-10
- fedora-30
- whonix-{gw,ws}-15

QubesOS/qubes-issues#5108
2019-06-24 18:10:04 +02:00
Marek Marczykowski-Górecki
3c12390129
qubes-release 4.0-8
QubesOS/qubes-issues#
2019-04-13 05:28:29 +02:00
unman
2ce7edc6fe
Add new onion addresses to repo lists 2019-04-13 05:26:53 +02:00
Frédéric Pierret (fepitre)
beb177026c
Add 'kernel-latest' and 'kernel-latest-qubes-vm' as optional packages 2019-04-07 20:58:06 +02:00
Marek Marczykowski-Górecki
c92b713f9f
conf: create separate iso-full-online.ks for release builds
... using online repositories.

(cherry picked from commit 8426e7c1b3)
Modified for R4.0
2019-04-06 22:37:57 +02:00
Frédéric Pierret (fepitre)
cfe1e28266
Create ISO with new name format instead of legacy one
(cherry picked from commit 7458a1ad84)
2019-04-06 00:30:34 +02:00
Frédéric Pierret (fepitre)
e574ea6c3c
Add stamp for latest built iso
(cherry picked from commit e0d309d0cc)
2019-04-06 00:29:40 +02:00
35 changed files with 949 additions and 525 deletions

View File

@ -1,5 +1,5 @@
sudo: required
dist: trusty
dist: bionic
language: generic
install: git clone https://github.com/QubesOS/qubes-builder ~/qubes-builder
script:

View File

@ -59,7 +59,8 @@ iso-installer: iso-prepare
pushd work && pungi --name=Qubes $(PUNGI_OPTS) -c $(INSTALLER_KICKSTART) && popd
# Move result files to known-named directories
mkdir -p build/ISO/qubes-x86_64/iso
mv work/$(ISO_VERSION)/x86_64/iso/*-DVD*.iso build/ISO/qubes-x86_64/iso/
mv work/$(ISO_VERSION)/x86_64/iso/*-DVD*.iso build/ISO/qubes-x86_64/iso/Qubes-$(ISO_VERSION)-x86_64.iso
echo $(ISO_VERSION) > build/ISO/qubes-x86_64/iso/build_latest
rm -rf build/work
mv work build/work
chown --reference=Makefile -R build yum

View File

@ -17,7 +17,7 @@ new file mode 100644
index 000000000..e98912b63
--- /dev/null
+++ b/pyanaconda/installclasses/qubes.py
@@ -0,0 +1,93 @@
@@ -0,0 +1,89 @@
+#
+# qubes.py
+#
@ -92,10 +92,6 @@ index 000000000..e98912b63
+ storage.autopart_requests.remove(autoreq)
+ if autoreq.mountpoint == "/boot/efi":
+ autoreq.max_size=Size("500MiB")
+ if autoreq.mountpoint == "/boot" and \
+ isinstance(platform, blivet.platform.EFI):
+ # xen.efi don't need /boot
+ storage.autopart_requests.remove(autoreq)
+
+ def productMatches(self, oldprod):
+ if oldprod is None:

View File

@ -0,0 +1,29 @@
From 83136384582280bde3379ee87898891d88463930 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Tue, 25 Jun 2019 19:59:17 +0200
Subject: [PATCH] Add "plymouth.ignore-serial-consoles" boot option by default
This preserve graphical boot even if plymouth detects /dev/hvc0 as a
serial console.
QubesOS/qubes-issues#3849
---
pyanaconda/installclasses/qubes.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/pyanaconda/installclasses/qubes.py b/pyanaconda/installclasses/qubes.py
index b5caff037..0ab8ce553 100644
--- a/pyanaconda/installclasses/qubes.py
+++ b/pyanaconda/installclasses/qubes.py
@@ -45,6 +45,7 @@ class InstallClass(BaseInstallClass):
installUpdates = False
bootloaderTimeoutDefault = 5
+ bootloaderExtraArgs = ["plymouth.ignore-serial-consoles"]
tasks = [(N_("Minimal"), ["base", "base-x", "kde-desktop-qubes", "qubes" ]) ]
--
2.20.1

View File

@ -0,0 +1,79 @@
From 0f181e582ff47bb216f0f334a77518197d05f0fb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Thu, 24 Oct 2019 18:11:46 +0200
Subject: [PATCH] Report 20% space needed for LVM thin provisioning
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
blivet reserver 20% free space if thin pool is created. Anaconda/blivet
interface for reporting metadata/reserved space is lacking. As a
workaround add 20% at GUI layer.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
pyanaconda/ui/gui/spokes/lib/resize.py | 7 +++++++
pyanaconda/ui/gui/spokes/storage.py | 5 +++++
2 files changed, 12 insertions(+)
diff --git a/pyanaconda/ui/gui/spokes/lib/resize.py b/pyanaconda/ui/gui/spokes/lib/resize.py
index 73be5e23e..2626bec0d 100644
--- a/pyanaconda/ui/gui/spokes/lib/resize.py
+++ b/pyanaconda/ui/gui/spokes/lib/resize.py
@@ -31,6 +31,7 @@ from pyanaconda.ui.gui import GUIObject
from pyanaconda.ui.gui.utils import blockedHandler, escape_markup, timed_action
from blivet.size import Size
from blivet.formats.fs import FS
+from pykickstart.constants import AUTOPART_TYPE_LVM_THINP
__all__ = ["ResizeDialog"]
@@ -84,6 +85,9 @@ class ResizeDialog(GUIObject):
self._required_label = self.builder.get_object("requiredSpaceLabel")
markup = _("Installation requires a total of <b>%s</b> for system data.")
required_dev_size = self.payload.requiredDeviceSize(FS.biggest_overhead_FS())
+ if self.storage.autopart_type == AUTOPART_TYPE_LVM_THINP:
+ # blivet reserve 20% free space in volume group if thin pool is created
+ required_dev_size /= 0.8
self._required_label.set_markup(markup % escape_markup(str(required_dev_size)))
self._reclaimDescLabel = self.builder.get_object("reclaimDescLabel")
@@ -315,6 +319,9 @@ class ResizeDialog(GUIObject):
def _update_reclaim_button(self, got):
required_dev_size = self.payload.requiredDeviceSize(FS.biggest_overhead_FS())
+ if self.storage.autopart_type == AUTOPART_TYPE_LVM_THINP:
+ # blivet reserve 20% free space in volume group if thin pool is created
+ required_dev_size /= 0.8
self._resizeButton.set_sensitive(got+self._initialFreeSpace >= required_dev_size)
# pylint: disable=arguments-differ
diff --git a/pyanaconda/ui/gui/spokes/storage.py b/pyanaconda/ui/gui/spokes/storage.py
index a75f1dfc9..0c6000f2e 100644
--- a/pyanaconda/ui/gui/spokes/storage.py
+++ b/pyanaconda/ui/gui/spokes/storage.py
@@ -874,6 +874,9 @@ class StorageSpoke(NormalSpoke, StorageChecker):
disks_size = sum((d.size for d in disks), Size(0))
required_space = self.payload.spaceRequired
+ if self.storage.autopart_type == AUTOPART_TYPE_LVM_THINP:
+ # blivet reserve 20% free space in volume group if thin pool is created
+ required_space /= 0.8
auto_swap = sum((r.size for r in self.storage.autopart_requests
if r.fstype == "swap"), Size(0))
if self.autopart and auto_swap == Size(0):
@@ -1021,6 +1024,8 @@ class StorageSpoke(NormalSpoke, StorageChecker):
dialog = ResizeDialog(self.data, self.storage, self.payload)
dialog.refresh(disks)
else:
+ # respect disk selection and other choices in the ReclaimDialog
+ self.apply()
dialog = self._check_space_and_get_dialog(disks)
if dialog:
--
2.20.1

View File

@ -3,7 +3,7 @@
Summary: Graphical system installer
Name: anaconda
Version: 25.20.9
Release: 14%{?dist}
Release: 16%{?dist}
License: GPLv2+ and MIT
Epoch: 1000
Group: Applications/System
@ -74,6 +74,8 @@ Patch53: 0053-anaconda-require-user-password-being-set.patch
Patch54: 0054-anaconda-abort-installation-on-X-startup-fail.patch
Patch55: 0055-anaconda-fix-encryption-passphrase-check.patch
Patch56: 0056-anaconda-disable-os-prober.patch
Patch57: 0057-Add-plymouth.ignore-serial-consoles-boot-option-by-d.patch
Patch58: 0058-Report-20-space-needed-for-LVM-thin-provisioning.patch
# Versions of required components (done so we make sure the buildrequires
# match the requires versions of things).

View File

@ -0,0 +1,47 @@
From 1ce66b58907e229e21a0012a7a36ae93e9e32054 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Tue, 22 Oct 2019 16:15:31 +0200
Subject: [PATCH] Avoid mounting pre-existing disks
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This operation may be harmfull in many ways:
- may unintentionally modify a disk not selected as installation target
(mounting even read only replays journal for example)
- if previous system was compromised, it may try to exploit some of the
parsing code (filesystem driver etc) to survive across
re-installation
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/osinstall.py | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/blivet/osinstall.py b/blivet/osinstall.py
index 485e774c..f46388cd 100644
--- a/blivet/osinstall.py
+++ b/blivet/osinstall.py
@@ -211,14 +211,8 @@ def find_existing_installations(devicetree, teardown_all=True):
:rtype: list of :class:`Root`
"""
- try:
- roots = _find_existing_installations(devicetree)
- return roots
- except Exception: # pylint: disable=broad-except
- log_exception_info(log.info, "failure detecting existing installations")
- finally:
- if teardown_all:
- devicetree.teardown_all()
+ if teardown_all:
+ devicetree.teardown_all()
return []
--
2.20.1

View File

@ -1,44 +0,0 @@
From a43dc757eff7fe9417f72e25fc373d09439963de Mon Sep 17 00:00:00 2001
From: Vratislav Podzimek <vpodzime@redhat.com>
Date: Fri, 18 Nov 2016 14:01:49 +0100
Subject: [PATCH 1/2] Change how we run e2fsck to check ext filesystems
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
The '-p' option means "Automatically repair ("preen") the file system. This
option will cause e2fsck to automatically fix any filesystem problems that can
be safely fixed without human intervention." which is something we really
shouldn't do as part of reset()/populate(). We should use '-n' instead "Open the
filesystem read-only, and assume an answer of `no' to all questions." which
guaranties no changes to be made on the file system.
We might want to add the '-p' functionality back at some point, but it needs to
be explicitly triggered by the user code (e.g. Anaconda). I think we need to add
a 'clean' property and a 'repair' method to the formats.FS class so that users
can see where the problem is (if any) and explicitly trigger a safe fixup
attempt if they want to.
Related: rhbz#1170803
---
blivet/tasks/fsck.py | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/blivet/tasks/fsck.py b/blivet/tasks/fsck.py
index a3ed775..c4214dc 100644
--- a/blivet/tasks/fsck.py
+++ b/blivet/tasks/fsck.py
@@ -114,7 +114,9 @@ class Ext2FSCK(FSCK):
128: "Shared library error."}
ext = availability.E2FSCK_APP
- options = ["-f", "-p", "-C", "0"]
+ # "Force checking even if the file system seems clean." (we might get false results otherwise)
+ # + "Open the filesystem read-only, and assume an answer of `no' to all questions."
+ options = ["-f", "-n"]
def _error_message(self, rc):
msgs = (self._fsck_errors[c] for c in self._fsck_errors.keys() if rc & c)
--
2.7.5

View File

@ -0,0 +1,36 @@
From 88b59572bccd4cfa60d5eb8d0379094a81908358 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Tue, 20 Aug 2019 04:17:42 +0200
Subject: [PATCH] Double recommended LVM thin pool metadata space
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Running out of metadata space is fatal, and it happens with the default
value on Qubes OS. Double the default to be safe.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/devices/lvm.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py
index 72a2d395..e163dbe3 100644
--- a/blivet/devices/lvm.py
+++ b/blivet/devices/lvm.py
@@ -1532,6 +1532,9 @@ class LVMThinPoolMixin(object):
self._metadata_size = Size( get_thpool_meta_size(self._size,
self._chunk_size,
100)) # snapshots
+ # use twice as much as thin_metadata_size recommends, to accommodate
+ # large number of frequent snapshots
+ self._metadata_size *= 2
log.debug("Recommended metadata size: %s", self._metadata_size)
self._metadata_size = self.vg.align(self._metadata_size, roundup=True)
--
2.20.1

View File

@ -1,47 +0,0 @@
From d08d99dfb766e539b9e0074643ab3bc940d6fcee Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 10 Nov 2016 11:34:24 -0800
Subject: [PATCH] Fix detection of 'macefi' partitions (#1393846)
368a4db6 lost a crucial condition in the detection of 'macefi'
partitions in the transition to the 'populator helper' design.
Previously we checked that the parted partition 'name' (which
is a GPT property, for GPT partitions) matched the expected
value according to the macefi format, which basically means we
will only detect partitions created by a previous anaconda run
as 'macefi' (because that name is a very specific one which is
only created by anaconda in the first place).
In the transition, that condition was lost, and now we treat
any device with an HFS+ filesystem that's over 50MiB in size
as a 'macefi' device, which means we mount it at /boot/efi and
try to write all kinds of stuff to it. Not surprisingly, this
borks the install. Fortunately, HFS+ filesystems are mounted
read-only unless they have journalling disabled, so this won't
result in us messing up people's OS X partitions with any luck.
---
blivet/populator/helpers/boot.py | 10 ++++++++++
tests/populator_test.py | 33 +++++++++++++++++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/blivet/populator/helpers/boot.py b/blivet/populator/helpers/boot.py
index b679b3b..3d80dd2 100644
--- a/blivet/populator/helpers/boot.py
+++ b/blivet/populator/helpers/boot.py
@@ -54,6 +54,16 @@ class MacEFIFormatPopulator(BootFormatPopulator):
_type_specifier = "macefi"
_base_type_specifier = "hfsplus"
+ @classmethod
+ def match(cls, data, device):
+ fmt = formats.get_format(cls._type_specifier)
+ try:
+ return (super().match(data, device) and
+ device.parted_partition.name == fmt.name)
+ except AttributeError:
+ # just in case device.parted_partition has no name attr
+ return False
+
class AppleBootFormatPopulator(BootFormatPopulator):
_type_specifier = "appleboot"

View File

@ -1,34 +0,0 @@
From 7a9697eae467fc0ed44022d948f70f30d156d69e Mon Sep 17 00:00:00 2001
From: Adam Williamson <adamw@fedoraproject.org>
Date: Fri, 11 Nov 2016 12:36:12 -0500
Subject: [PATCH] Fix "unknown" SAS device sysfs parsing.
Since the regexp matches the device type as well as the identifying
numbers, we need to pull the numbers from match groups 2 and 3, not 1
and 2.
Resolves: rhbz#1394026
Signed-off-by: Peter Jones <pjones@redhat.com>
---
blivet/devicelibs/edd.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/blivet/devicelibs/edd.py b/blivet/devicelibs/edd.py
index 7a1a1e2..51b7ed8 100644
--- a/blivet/devicelibs/edd.py
+++ b/blivet/devicelibs/edd.py
@@ -316,8 +316,8 @@ class EddEntry(object):
self.sas_address = int(sas_match.group(1), base=16)
self.sas_lun = int(sas_match.group(2), base=16)
elif unknown_match:
- self.sas_address = int(unknown_match.group(1), base=16)
- self.sas_lun = int(unknown_match.group(2), base=16)
+ self.sas_address = int(unknown_match.group(2), base=16)
+ self.sas_lun = int(unknown_match.group(3), base=16)
else:
log.warning("edd: can not match interface for %s: %s",
self.sysfspath, interface)
--
2.7.4

View File

@ -0,0 +1,76 @@
From e6369b8986953e3d0eba93cc024a2219320fa42c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Tue, 22 Oct 2019 14:52:17 +0200
Subject: [PATCH 1/2] Revert "FBA DASD should use the msdos disk label type"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This reverts commit 41627e946cafc9341fd90c6713830aa67ebe28e7.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/platform.py | 21 ++++-----------------
python-blivet.spec | 2 +-
2 files changed, 5 insertions(+), 18 deletions(-)
diff --git a/blivet/platform.py b/blivet/platform.py
index 4772b35d..9100487e 100644
--- a/blivet/platform.py
+++ b/blivet/platform.py
@@ -22,11 +22,6 @@
import logging
log = logging.getLogger("blivet")
-import gi
-gi.require_version("BlockDev", "2.0")
-
-from gi.repository import BlockDev as blockdev
-
import parted
from . import arch
@@ -356,20 +351,12 @@ class S390(Platform):
return [PartSpec(mountpoint="/boot", size=Size("1GiB"),
weight=self.weight(mountpoint="/boot"), lv=False)]
- def best_disklabel_type(self, device):
- """The best disklabel type for the specified device."""
- if flags.testing:
- return self.default_disklabel_type
-
- # the device is FBA DASD
- if blockdev.s390.dasd_is_fba(device.path):
- return "msdos"
- # the device is DASD
- elif parted.Device(path=device.path).type == parted.DEVICE_DASD:
+ def required_disklabel_type(self, device_type):
+ """The required disklabel type for the specified device type."""
+ if device_type == parted.DEVICE_DASD:
return "dasd"
- # other types of devices
- return super(S390, self).best_disklabel_type(device)
+ return super(S390, self).required_disklabel_type(device_type)
class ARM(Platform):
diff --git a/python-blivet.spec b/python-blivet.spec
index 1481bf84..0c3392c9 100644
--- a/python-blivet.spec
+++ b/python-blivet.spec
@@ -19,7 +19,7 @@ Source0: http://github.com/storaged-project/blivet/archive/%{realname}-%{realver
%global partedver 1.8.1
%global pypartedver 3.10.4
%global utillinuxver 2.15.1
-%global libblockdevver 2.6
+%global libblockdevver 2.1
%global libbytesizever 0.3
%global pyudevver 0.18
--
2.20.1

View File

@ -1,28 +0,0 @@
From cf32290dd3a0561585837fddfcdb08b3389f356a Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Wed, 26 Oct 2016 16:17:46 -0700
Subject: [PATCH 1/4] Use correct type for port in GVariant tuple
The type is `(sqa{sv})`, where `q` (according to the docs) is
"an unsigned 16 bit integer", so this should be an int, not a
string.
---
blivet/iscsi.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blivet/iscsi.py b/blivet/iscsi.py
index 8773509..14c4b9a 100644
--- a/blivet/iscsi.py
+++ b/blivet/iscsi.py
@@ -369,7 +369,7 @@ class iSCSI(object):
if r_password:
auth_info["r_password"] = GLib.Variant("s", r_password)
- args = GLib.Variant("(sqa{sv})", (ipaddr, port, auth_info))
+ args = GLib.Variant("(sqa{sv})", (ipaddr, int(port), auth_info))
nodes, _n_nodes = self._call_initiator_method("DiscoverSendTargets", args)
found_nodes = _to_node_infos(nodes)
--
2.7.4

View File

@ -1,84 +0,0 @@
From 32ba44edfa5cd4424154396b877cd5ad75e8c999 Mon Sep 17 00:00:00 2001
From: Vratislav Podzimek <vpodzime@redhat.com>
Date: Tue, 22 Nov 2016 08:52:34 +0100
Subject: [PATCH 2/2] Do not run FS check as part of updating (re)size info
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
If the FS tools tell us the minimum size of the file system we are supposed to
(see rhbz#1170803) consider that an evidence of the file system being in a good
enough shape to be resized.
Resolves: rhbz#1170803
---
blivet/formats/fs.py | 44 ++++++++++++++++++--------------------------
1 file changed, 18 insertions(+), 26 deletions(-)
diff --git a/blivet/formats/fs.py b/blivet/formats/fs.py
index 203926e..100bfce 100644
--- a/blivet/formats/fs.py
+++ b/blivet/formats/fs.py
@@ -296,8 +296,6 @@ class FS(DeviceFormat):
""" Update this filesystem's current and minimum size (for resize). """
# This method ensures:
- # * If there are fsck errors, self._resizable is False.
- # Note that if there is no fsck program, no errors are possible.
# * If it is not possible to obtain the current size of the
# filesystem by interrogating the filesystem, self._resizable
# is False (and self._size is 0).
@@ -317,32 +315,26 @@ class FS(DeviceFormat):
self._min_instance_size = Size(0)
self._resizable = self.__class__._resizable
- # We can't allow resize if the filesystem has errors.
+ # try to gather current size info
+ self._size = Size(0)
try:
- self.do_check()
- except FSError:
+ if self._info.available:
+ self._current_info = self._info.do_task()
+ except FSError as e:
+ log.info("Failed to obtain info for device %s: %s", self.device, e)
+ try:
+ self._size = self._size_info.do_task()
+ except (FSError, NotImplementedError) as e:
+ log.warning("Failed to obtain current size for device %s: %s", self.device, e)
+ else:
+ self._min_instance_size = self._size
+
+ # We absolutely need a current size to enable resize. To shrink the
+ # filesystem we need a real minimum size provided by the resize
+ # tool. Failing that, we can default to the current size,
+ # effectively disabling shrink.
+ if self._size == Size(0):
self._resizable = False
- raise
- finally:
- # try to gather current size info anyway
- self._size = Size(0)
- try:
- if self._info.available:
- self._current_info = self._info.do_task()
- except FSError as e:
- log.info("Failed to obtain info for device %s: %s", self.device, e)
- try:
- self._size = self._size_info.do_task()
- self._min_instance_size = self._size
- except (FSError, NotImplementedError) as e:
- log.warning("Failed to obtain current size for device %s: %s", self.device, e)
-
- # We absolutely need a current size to enable resize. To shrink the
- # filesystem we need a real minimum size provided by the resize
- # tool. Failing that, we can default to the current size,
- # effectively disabling shrink.
- if self._size == Size(0):
- self._resizable = False
try:
result = self._minsize.do_task()
--
2.7.5

View File

@ -0,0 +1,497 @@
From cbf2890b7be57e159e0890da4fded5062152f191 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Tue, 22 Oct 2019 14:52:36 +0200
Subject: [PATCH 2/2] Revert "Require BlockDev 2.0 in the gi.require_version()
call"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This reverts commit 778ca84050289f4a4c27857d923d6e3aea4919fc.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/__init__.py | 2 +-
blivet/devicefactory.py | 2 +-
blivet/devicelibs/lvm.py | 2 +-
blivet/devices/btrfs.py | 2 +-
blivet/devices/disk.py | 2 +-
blivet/devices/dm.py | 2 +-
blivet/devices/loop.py | 2 +-
blivet/devices/lvm.py | 2 +-
blivet/devices/md.py | 2 +-
blivet/devices/partition.py | 2 +-
blivet/devicetree.py | 2 +-
blivet/formats/__init__.py | 2 +-
blivet/formats/luks.py | 2 +-
blivet/formats/lvmpv.py | 2 +-
blivet/formats/mdraid.py | 2 +-
blivet/formats/swap.py | 2 +-
blivet/osinstall.py | 2 +-
blivet/partitioning.py | 2 +-
blivet/populator/helpers/disk.py | 2 +-
blivet/populator/helpers/dmraid.py | 2 +-
blivet/populator/helpers/loop.py | 2 +-
blivet/populator/helpers/luks.py | 2 +-
blivet/populator/helpers/lvm.py | 2 +-
blivet/populator/helpers/mdraid.py | 2 +-
blivet/populator/helpers/partition.py | 2 +-
blivet/populator/populator.py | 2 +-
blivet/static_data/lvm_info.py | 2 +-
blivet/static_data/mpath_info.py | 2 +-
blivet/tasks/availability.py | 2 +-
blivet/tasks/lukstasks.py | 2 +-
blivet/tasks/pvtask.py | 2 +-
blivet/util.py | 2 +-
blivet/zfcp.py | 2 +-
python-blivet.spec | 2 +-
34 files changed, 34 insertions(+), 34 deletions(-)
diff --git a/blivet/__init__.py b/blivet/__init__.py
index 1325e540..d5105842 100644
--- a/blivet/__init__.py
+++ b/blivet/__init__.py
@@ -75,7 +75,7 @@ log_bd_message = lambda level, msg: program_log.info(msg)
import gi
gi.require_version("GLib", "2.0")
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
# initialize the libblockdev library
from gi.repository import GLib
diff --git a/blivet/devicefactory.py b/blivet/devicefactory.py
index 5b680668..5f486aab 100644
--- a/blivet/devicefactory.py
+++ b/blivet/devicefactory.py
@@ -38,7 +38,7 @@ from .size import Size
from .static_data import luks_data
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devicelibs/lvm.py b/blivet/devicelibs/lvm.py
index 24adf9a0..352f67a2 100644
--- a/blivet/devicelibs/lvm.py
+++ b/blivet/devicelibs/lvm.py
@@ -27,7 +27,7 @@ from collections import namedtuple
import itertools
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/btrfs.py b/blivet/devices/btrfs.py
index c5cb21f7..35a2b099 100644
--- a/blivet/devices/btrfs.py
+++ b/blivet/devices/btrfs.py
@@ -24,7 +24,7 @@ import copy
import tempfile
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/disk.py b/blivet/devices/disk.py
index 1136a535..acf31eed 100644
--- a/blivet/devices/disk.py
+++ b/blivet/devices/disk.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/dm.py b/blivet/devices/dm.py
index a0350b24..e7efddfb 100644
--- a/blivet/devices/dm.py
+++ b/blivet/devices/dm.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/loop.py b/blivet/devices/loop.py
index 78f88d7d..fcef161d 100644
--- a/blivet/devices/loop.py
+++ b/blivet/devices/loop.py
@@ -20,7 +20,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py
index 72a2d395..39c6f342 100644
--- a/blivet/devices/lvm.py
+++ b/blivet/devices/lvm.py
@@ -30,7 +30,7 @@ from functools import wraps
from enum import Enum
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/md.py b/blivet/devices/md.py
index 891805aa..3006236e 100644
--- a/blivet/devices/md.py
+++ b/blivet/devices/md.py
@@ -23,7 +23,7 @@ import os
import six
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devices/partition.py b/blivet/devices/partition.py
index 4c175403..66f768d2 100644
--- a/blivet/devices/partition.py
+++ b/blivet/devices/partition.py
@@ -24,7 +24,7 @@ import parted
import _ped
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/devicetree.py b/blivet/devicetree.py
index 805f6a04..8057f7e7 100644
--- a/blivet/devicetree.py
+++ b/blivet/devicetree.py
@@ -25,7 +25,7 @@ import pprint
import re
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/formats/__init__.py b/blivet/formats/__init__.py
index f60402fe..6d4eaf39 100644
--- a/blivet/formats/__init__.py
+++ b/blivet/formats/__init__.py
@@ -22,7 +22,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/formats/luks.py b/blivet/formats/luks.py
index d8db8dd5..4ad8252a 100644
--- a/blivet/formats/luks.py
+++ b/blivet/formats/luks.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/formats/lvmpv.py b/blivet/formats/lvmpv.py
index 260cc0bd..b2f70cdc 100644
--- a/blivet/formats/lvmpv.py
+++ b/blivet/formats/lvmpv.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/formats/mdraid.py b/blivet/formats/mdraid.py
index 383160a3..ee7e887a 100644
--- a/blivet/formats/mdraid.py
+++ b/blivet/formats/mdraid.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/formats/swap.py b/blivet/formats/swap.py
index 46dc980f..185fda53 100644
--- a/blivet/formats/swap.py
+++ b/blivet/formats/swap.py
@@ -29,7 +29,7 @@ from . import DeviceFormat, register_device_format
from ..size import Size
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/osinstall.py b/blivet/osinstall.py
index a4f9535f..485e774c 100644
--- a/blivet/osinstall.py
+++ b/blivet/osinstall.py
@@ -26,7 +26,7 @@ import stat
import time
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/partitioning.py b/blivet/partitioning.py
index dcc7ce80..b7b2617c 100644
--- a/blivet/partitioning.py
+++ b/blivet/partitioning.py
@@ -25,7 +25,7 @@ from decimal import Decimal
import functools
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
import parted
diff --git a/blivet/populator/helpers/disk.py b/blivet/populator/helpers/disk.py
index e937128b..9313f766 100644
--- a/blivet/populator/helpers/disk.py
+++ b/blivet/populator/helpers/disk.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/populator/helpers/dmraid.py b/blivet/populator/helpers/dmraid.py
index 5db42196..987caec3 100644
--- a/blivet/populator/helpers/dmraid.py
+++ b/blivet/populator/helpers/dmraid.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/populator/helpers/loop.py b/blivet/populator/helpers/loop.py
index 99fc4bb5..33bb3423 100644
--- a/blivet/populator/helpers/loop.py
+++ b/blivet/populator/helpers/loop.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
from ... import udev
diff --git a/blivet/populator/helpers/luks.py b/blivet/populator/helpers/luks.py
index 433cc06e..d27089a6 100644
--- a/blivet/populator/helpers/luks.py
+++ b/blivet/populator/helpers/luks.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/populator/helpers/lvm.py b/blivet/populator/helpers/lvm.py
index 10ef1646..2a985adc 100644
--- a/blivet/populator/helpers/lvm.py
+++ b/blivet/populator/helpers/lvm.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/populator/helpers/mdraid.py b/blivet/populator/helpers/mdraid.py
index 998e8de9..5542cc4d 100644
--- a/blivet/populator/helpers/mdraid.py
+++ b/blivet/populator/helpers/mdraid.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/populator/helpers/partition.py b/blivet/populator/helpers/partition.py
index 73b15f11..d977ea49 100644
--- a/blivet/populator/helpers/partition.py
+++ b/blivet/populator/helpers/partition.py
@@ -23,7 +23,7 @@
import copy
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
from ... import udev
diff --git a/blivet/populator/populator.py b/blivet/populator/populator.py
index 7a6a4ae9..84c1d33d 100644
--- a/blivet/populator/populator.py
+++ b/blivet/populator/populator.py
@@ -26,7 +26,7 @@ import copy
import parted
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/static_data/lvm_info.py b/blivet/static_data/lvm_info.py
index 89e1b8e1..f8965f15 100644
--- a/blivet/static_data/lvm_info.py
+++ b/blivet/static_data/lvm_info.py
@@ -21,7 +21,7 @@
#
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/static_data/mpath_info.py b/blivet/static_data/mpath_info.py
index 71bf17e1..c9ca8a30 100644
--- a/blivet/static_data/mpath_info.py
+++ b/blivet/static_data/mpath_info.py
@@ -20,7 +20,7 @@
import os
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/tasks/availability.py b/blivet/tasks/availability.py
index 354a9ee1..c7f58b87 100644
--- a/blivet/tasks/availability.py
+++ b/blivet/tasks/availability.py
@@ -25,7 +25,7 @@ from distutils.spawn import find_executable
from six import add_metaclass
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/tasks/lukstasks.py b/blivet/tasks/lukstasks.py
index d32fe978..7814454f 100644
--- a/blivet/tasks/lukstasks.py
+++ b/blivet/tasks/lukstasks.py
@@ -20,7 +20,7 @@
# Red Hat Author(s): Anne Mulhern <amulhern@redhat.com>
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/tasks/pvtask.py b/blivet/tasks/pvtask.py
index a96d380d..2cb07a34 100644
--- a/blivet/tasks/pvtask.py
+++ b/blivet/tasks/pvtask.py
@@ -21,7 +21,7 @@
# Red Hat Author(s): Vojtěch Trefný <vtrefny@redhat.com>
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/util.py b/blivet/util.py
index 57f6372f..ba81bb6e 100644
--- a/blivet/util.py
+++ b/blivet/util.py
@@ -22,7 +22,7 @@ from enum import Enum
from .errors import DependencyError
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/blivet/zfcp.py b/blivet/zfcp.py
index 2381599c..0074c5dc 100644
--- a/blivet/zfcp.py
+++ b/blivet/zfcp.py
@@ -26,7 +26,7 @@ from .i18n import _
from .util import stringize, unicodeize
import gi
-gi.require_version("BlockDev", "2.0")
+gi.require_version("BlockDev", "1.0")
from gi.repository import BlockDev as blockdev
diff --git a/python-blivet.spec b/python-blivet.spec
index 0c3392c9..5e7bf8a1 100644
--- a/python-blivet.spec
+++ b/python-blivet.spec
@@ -19,7 +19,7 @@ Source0: http://github.com/storaged-project/blivet/archive/%{realname}-%{realver
%global partedver 1.8.1
%global pypartedver 3.10.4
%global utillinuxver 2.15.1
-%global libblockdevver 2.1
+%global libblockdevver 1.9
%global libbytesizever 0.3
%global pyudevver 0.18
--
2.20.1

View File

@ -1,122 +0,0 @@
From 5eaadad9218210ed2a616104a6e56665c38f9277 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Wed, 26 Oct 2016 20:42:53 -0700
Subject: [PATCH 2/4] iSCSI: Store auth info in NodeInfo tuples
This seems to have been overlooked in 9280eff7 . When we were
using libiscsi, the `node` objects were `PyIscsiNode` instances
(I think), with `getAuth` and `setAuth` methods that let you
read and set the authentication information for the node. We
used `getAuth` in `iScsiDiskDevice.dracut_setup_args()` to
include the auth information in the `netroot` arg. anaconda
also expects the `node` attribute of an `iScsiDiskDevice`
instance to be a `PyIscsiNode` and calls its `getAuth` method
to populate the kickstart data for the node.
When we ditched libiscsi and turned the `node` objects into
`NodeInfo` namedtuples, this was missed and not handled at all.
Both blivet and anaconda are still trying to call methods that
these node objects just don't have any more. The blivet call
was changed from `getAuth()` to `get_auth()` in 4e8f941b , but
apparently whoever did that didn't notice that neither method
exists at all for these objects any more...
Here's my attempt to fix this: basically, just stuff the auth
information into the `NodeInfo` instances when we log in. I
thought of several different ways to do this, but I think in
the end it always has to boil down to storing the auth details
on the node object when we log in, so let's just go with the
obvious way. We could mimic the `getAuth` and `setAuth` methods
pretty easily for 'compatibility', but it doesn't seem worth
it, we'd probably still be missing other bits of the interface.
---
blivet/devices/disk.py | 11 +++++------
blivet/iscsi.py | 33 +++++++++++++++++++++++++++++++--
2 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/blivet/devices/disk.py b/blivet/devices/disk.py
index 6880e1e..acf31ee 100644
--- a/blivet/devices/disk.py
+++ b/blivet/devices/disk.py
@@ -452,12 +452,11 @@ class iScsiDiskDevice(DiskDevice, NetworkStorageDevice):
address = "[%s]" % address
netroot = "netroot=iscsi:"
- auth = self.node.get_auth()
- if auth:
- netroot += "%s:%s" % (auth.username, auth.password)
- if len(auth.reverse_username) or len(auth.reverse_password):
- netroot += ":%s:%s" % (auth.reverse_username,
- auth.reverse_password)
+ if self.node.username and self.node.password:
+ netroot += "%s:%s" % (self.node.username, self.node.password)
+ if self.node.r_username and self.node.r_password:
+ netroot += ":%s:%s" % (self.node.r_username,
+ self.node.r_password)
iface_spec = ""
if self.nic != "default":
diff --git a/blivet/iscsi.py b/blivet/iscsi.py
index 14c4b9a..1969fc8 100644
--- a/blivet/iscsi.py
+++ b/blivet/iscsi.py
@@ -66,10 +66,31 @@ def has_iscsi():
return True
-NodeInfo = namedtuple("NodeInfo", ["name", "tpgt", "address", "port", "iface"])
TargetInfo = namedtuple("TargetInfo", ["ipaddr", "port"])
+class NodeInfo(object):
+ """Simple representation of node information."""
+ def __init__(self, name, tpgt, address, port, iface):
+ self.name = name
+ self.tpgt = tpgt
+ self.address = address
+ self.port = port
+ self.iface = iface
+ # These get set by log_into_node, but *NOT* _login
+ self.username = None
+ self.password = None
+ self.r_username = None
+ self.r_password = None
+
+ @property
+ def conn_info(self):
+ """The 5-tuple of connection info (no auth info). This form
+ is useful for interacting with storaged.
+ """
+ return (self.name, self.tpgt, self.address, self.port, self.iface)
+
+
class LoginInfo(object):
def __init__(self, node, logged_in):
self.node = node
@@ -239,7 +260,7 @@ class iSCSI(object):
extra = dict()
extra["node.startup"] = GLib.Variant("s", "automatic")
- args = GLib.Variant("(sisisa{sv})", tuple(list(node_info) + [extra]))
+ args = GLib.Variant("(sisisa{sv})", node_info.conn_info + (extra,))
self._call_initiator_method("Login", args)
@storaged_iscsi_required(critical=False, eval_mode=util.EvalMode.onetime)
@@ -414,6 +435,14 @@ class iSCSI(object):
node.name, node.address, node.port, node.iface)
if not self._mark_node_active(node):
log.error("iSCSI: node not found among discovered")
+ if username:
+ node.username = username
+ if password:
+ node.password = password
+ if r_username:
+ node.r_username = r_username
+ if r_password:
+ node.r_password = r_password
except safe_dbus.DBusCallError as e:
msg = str(e)
log.warning("iSCSI: could not log into %s: %s", node.name, msg)
--
2.7.4

View File

@ -0,0 +1,34 @@
From 42d465514031eb083cac591327436ed6bca2b94c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Tue, 22 Oct 2019 15:07:01 +0200
Subject: [PATCH] Revert "Adapt to logging module name change"
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
This reverts commit c367d62a516e541ad28636c8259321f1c53417ce.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/__init__.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blivet/__init__.py b/blivet/__init__.py
index d5105842..ecaedad8 100644
--- a/blivet/__init__.py
+++ b/blivet/__init__.py
@@ -124,7 +124,7 @@ def enable_installer_mode():
from pyanaconda.constants import ROOT_PATH # pylint: disable=redefined-outer-name,no-name-in-module
_storage_root = _sysroot = ROOT_PATH
- from pyanaconda.anaconda_logging import program_log_lock
+ from pyanaconda.anaconda_log import program_log_lock
util.program_log_lock = program_log_lock
flags.installer_mode = True
--
2.20.1

View File

@ -1,71 +0,0 @@
From 4d0b9f8338bfc1634340bb191058b888094ca81d Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Thu, 27 Oct 2016 15:17:29 -0700
Subject: [PATCH 3/4] iSCSI: turn `iscsi.initiator_set` into a property
The iSCSI class has an `initiator_set` attribute whose meaning
feels a bit slippery these days. It has always been set to
True in `__init__()` if iBFT is active, right after we get the
initiator name from the firmware. Prior to 9280eff7, it was
also set true by `startup()` after it wrote out INITIATOR_FILE.
In 9280eff7, that was removed, without any kind of replacement.
Now `initiator_set` will never be True unless iBFT is being
used.
This is a problem because `iscsi.write()` checks if it's True,
and immediately bails if it isn't. The result of this is that
when you do an iSCSI install with anaconda, the contents of
`/var/lib/iscsi` from the installer environment are no longer
copied in the installed system.
vpodzime asked for this fix: making it into a property which
returns True if `self._initiator` is set, otherwise False.
I used `== ""` as the test because that's what we use in other
places, though in my own code I'd normally just use
`if self._initiator:`.
Note that `if iscsi.initiator_set:` and `if iscsi.initiator:`
are not quite equivalent, as the `initiator` property will try
and read the initiator name from storaged if `self._initiator`
is not set, but `initiator_set` will not. This best matches
the previous behaviour, but I'm not sure if all of this makes
any logical sense when considered from scratch.
---
blivet/iscsi.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/blivet/iscsi.py b/blivet/iscsi.py
index 1969fc8..b221fd4 100644
--- a/blivet/iscsi.py
+++ b/blivet/iscsi.py
@@ -149,7 +149,6 @@ class iSCSI(object):
# This list contains nodes discovered through iBFT (or other firmware)
self.ibft_nodes = []
self._initiator = ""
- self.initiator_set = False
self.started = False
self.ifaces = {}
@@ -159,7 +158,6 @@ class iSCSI(object):
try:
initiatorname = self._call_initiator_method("GetFirmwareInitiatorName")[0]
self._initiator = initiatorname
- self.initiator_set = True
except Exception: # pylint: disable=broad-except
log_exception_info(fmt_str="failed to get initiator name from iscsi firmware")
@@ -197,6 +195,11 @@ class iSCSI(object):
connection=self._connection)
@property
+ def initiator_set(self):
+ """True if initiator is set at our level."""
+ return self._initiator != ""
+
+ @property
@storaged_iscsi_required(critical=False, eval_mode=util.EvalMode.onetime)
def initiator(self):
if self._initiator != "":
--
2.7.4

View File

@ -1,45 +0,0 @@
From 274b0bfb6aa923a82662e754030ebce4d8694901 Mon Sep 17 00:00:00 2001
From: Vratislav Podzimek <vpodzime@redhat.com>
Date: Thu, 3 Nov 2016 12:53:03 +0100
Subject: [PATCH 4/4] Add device symlinks to the PVs dictionary for MD RAID PVs
(#1389130)
Otherwise if the symlink is used to search for the PV info, it's not found and
everything on that PV is ignored which leads e.g. to issues when removing the PV
(as described in the bug) and others.
---
blivet/static_data/lvm_info.py | 18 +++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)
diff --git a/blivet/static_data/lvm_info.py b/blivet/static_data/lvm_info.py
index ed2e995..4f5a274 100644
--- a/blivet/static_data/lvm_info.py
+++ b/blivet/static_data/lvm_info.py
@@ -57,7 +57,23 @@ class PVsInfo(object):
def cache(self):
if self._pvs_cache is None:
pvs = blockdev.lvm.pvs()
- self._pvs_cache = dict((pv.pv_name, pv) for pv in pvs) # pylint: disable=attribute-defined-outside-init
+ self._pvs_cache = dict() # pylint: disable=attribute-defined-outside-init
+ for pv in pvs:
+ self._pvs_cache[pv.pv_name] = pv
+ # TODO: add get_all_device_symlinks() and resolve_device_symlink() functions to
+ # libblockdev and use them here
+ if pv.pv_name.startswith("/dev/md/"):
+ try:
+ md_node = blockdev.md.node_from_name(pv.pv_name[len("/dev/md/"):])
+ self._pvs_cache["/dev/" + md_node] = pv
+ except blockdev.MDRaidError:
+ pass
+ elif pv.pv_name.startswith("/dev/md"):
+ try:
+ md_named_dev = blockdev.md.name_from_node(pv.pv_name[len("/dev/"):])
+ self._pvs_cache["/dev/md/" + md_named_dev] = pv
+ except blockdev.MDRaidError:
+ pass
return self._pvs_cache
--
2.7.4

View File

@ -0,0 +1,52 @@
From 7a4cfbeb1f971d4968248a6002a365835f11c72e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Wed, 23 Oct 2019 00:21:02 +0200
Subject: [PATCH] Backport lvm thin pool metadata size functions from BlockDev
2.0
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Those are included only in BlockDev >= 2.0 API (libblockdev>=2.1), but
we don't have luxury of such new version. Since it's just one short
function and two constants, "copy" (translating from C) them directly
into blivet/devices/lvm.py.
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/devices/lvm.py | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py
index 39c6f342..94894272 100644
--- a/blivet/devices/lvm.py
+++ b/blivet/devices/lvm.py
@@ -56,6 +56,22 @@ from .dm import DMDevice
from .md import MDRaidArrayDevice
from .cache import Cache, CacheStats, CacheRequest
+# loose backport from BlockDev 2.0 interface
+LVM_DEFAULT_CHUNK_SIZE = 65536
+LVM_MIN_THPOOL_MD_SIZE = 2 * 2**20 # 2 MiB
+
+def get_thpool_meta_size(pool_size, block_size, max_thins):
+
+ command = ["thin_metadata_size",
+ "-ub", "-n",
+ "-b", str(int(block_size)),
+ "-s", str(int(pool_size)),
+ "-m", str(int(max_thins))]
+ (rc, out) = util.run_program_and_capture_output(command)
+ if rc:
+ raise Exception("thin_metadata_size failed with %d" % rc)
+ return max(int(out), LVM_MIN_THPOOL_MD_SIZE)
+
class LVPVSpec(object):
""" Class for specifying how much space on a PV should be allocated for some LV """
--
2.20.1

View File

@ -0,0 +1,36 @@
From 2aeba92531b6146a760440f857d526ca7c19053e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?=
<marmarek@invisiblethingslab.com>
Date: Wed, 23 Oct 2019 00:23:10 +0200
Subject: [PATCH 2/2] Use local backport of BlockDev 2.0 interface
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Organization: Invisible Things Lab
Cc: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
Signed-off-by: Marek Marczykowski-Górecki <marmarek@invisiblethingslab.com>
---
blivet/devices/lvm.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/blivet/devices/lvm.py b/blivet/devices/lvm.py
index 15ddef74..da3dc853 100644
--- a/blivet/devices/lvm.py
+++ b/blivet/devices/lvm.py
@@ -1541,10 +1541,10 @@ class LVMThinPoolMixin(object):
# we need to know chunk size to calculate recommended metadata size
if self._chunk_size == 0:
- self._chunk_size = Size(blockdev.LVM_DEFAULT_CHUNK_SIZE)
+ self._chunk_size = Size(LVM_DEFAULT_CHUNK_SIZE)
log.debug("Using default chunk size: %s", self._chunk_size)
- self._metadata_size = Size(blockdev.lvm.get_thpool_meta_size(self._size,
+ self._metadata_size = Size( get_thpool_meta_size(self._size,
self._chunk_size,
100)) # snapshots
log.debug("Recommended metadata size: %s", self._metadata_size)
--
2.20.1

BIN
blivet/blivet-2.1.11.tar.gz Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1,11 +1,11 @@
Summary: A python module for system storage configuration
Name: python-blivet
Url: http://fedoraproject.org/wiki/blivet
Version: 2.1.6
Version: 2.1.11
#%%global prerelease .b1
# prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2
Release: 5%{?prerelease}%{?dist}
Release: 6%{?prerelease}%{?dist}
Epoch: 2
License: LGPLv2+
Group: System Environment/Libraries
@ -13,15 +13,17 @@ Group: System Environment/Libraries
%global realversion %{version}%{?prerelease}
Source0: http://github.com/rhinstaller/blivet/archive/%{realname}-%{realversion}.tar.gz
Patch0: 0001-Use-correct-type-for-port-in-GVariant-tuple.patch
Patch1: 0002-iSCSI-Store-auth-info-in-NodeInfo-tuples.patch
Patch2: 0003-iSCSI-turn-iscsi.initiator_set-into-a-property.patch
Patch3: 0004-Add-device-symlinks-to-the-PVs-dictionary-for-MD-RAI.patch
Patch4: 0001-Fix-detection-of-macefi-partitions-1393846.patch
Patch5: 0001-Fix-unknown-SAS-device-sysfs-parsing.patch
Patch6: 0001-Change-how-we-run-e2fsck-to-check-ext-filesystems.patch
Patch7: 0002-Do-not-run-FS-check-as-part-of-updating-re-size-info.patch
Patch8: 0001-Fix-AttributeError-in-fsminsize-1502587.patch
Patch0: 0001-Fix-AttributeError-in-fsminsize-1502587.patch
# make it compatible with fc25
Patch1: 0001-Revert-FBA-DASD-should-use-the-msdos-disk-label-type.patch
Patch2: 0002-Revert-Require-BlockDev-2.0-in-the-gi.require_versio.patch
Patch3: 0003-Revert-Adapt-to-logging-module-name-change.patch
Patch4: 0004-Backport-lvm-thin-pool-metadata-size-functions-from-.patch
Patch5: 0005-Use-local-backport-of-BlockDev-2.0-interface.patch
# Qubes patches
Patch100: 0001-Double-recommended-LVM-thin-pool-metadata-space.patch
Patch101: 0001-Avoid-mounting-pre-existing-disks.patch
# Versions of required components (done so we make sure the buildrequires
# match the requires versions of things).
@ -77,9 +79,9 @@ configuration.
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%patch100 -p1
%patch101 -p1
rm -rf %{py3dir}
cp -a . %{py3dir}

7
conf/iso-full-online.ks Normal file
View File

@ -0,0 +1,7 @@
# Full ISO build using packages from online repositories instead of local build
%include qubes-kickstart.cfg
repo --name=qubes-r4.0 --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --baseurl=http://yum.qubes-os.org/r4.0/current-testing/dom0/fc25 --ignoregroups=true
repo --name=qubes-r4.0-templates-itl --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --mirrorlist=http://yum.qubes-os.org/r4.0/templates-itl/repodata/repomd.xml.metalink --ignoregroups=true
repo --name=qubes-r4.0-templates-community --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-templates-community --mirrorlist=http://yum.qubes-os.org/r4.0/templates-community/repodata/repomd.xml.metalink --ignoregroups=true

View File

@ -1,8 +1,6 @@
%include qubes-kickstart.cfg
%include iso-full-online.ks
repo --name=qubes-r4.0-testing --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --baseurl=http://mirrors.ukfast.co.uk/sites/qubes-os.org/repo/yum/r4.0/current-testing/dom0/fc25 --ignoregroups=true
repo --name=qubes-r4.0-templates-itl --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --baseurl=http://mirrors.ukfast.co.uk/sites/qubes-os.org/repo/yum/r4.0/templates-itl --ignoregroups=true
repo --name=qubes-r4.0-templates-itl-testing --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --baseurl=http://mirrors.ukfast.co.uk/sites/qubes-os.org/repo/yum/r4.0/templates-itl-testing --ignoregroups=true
repo --name=qubes-r4.0-templates-community --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-templates-community --baseurl=http://mirrors.ukfast.co.uk/sites/qubes-os.org/repo/yum/r4.0/templates-community --ignoregroups=true
repo --name=qubes-r4.0-templates-community-testing --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-templates-community --baseurl=http://mirrors.ukfast.co.uk/sites/qubes-os.org/repo/yum/r4.0/templates-community-testing --ignoregroups=true
repo --name=qubes-r4.0-testing --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --baseurl=http://yum.qubes-os.org/r4.0/current-testing/dom0/fc25 --ignoregroups=true
repo --name=qubes-r4.0-templates-itl-testing --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-primary --mirrorlist=http://yum.qubes-os.org/r4.0/templates-itl-testing/repodata/repomd.xml.metalink --ignoregroups=true
repo --name=qubes-r4.0-templates-community-testing --gpgkey=file:///tmp/qubes-installer/qubes-release/RPM-GPG-KEY-qubes-4.0-templates-community --mirrorlist=http://yum.qubes-os.org/r4.0/templates-community-testing/repodata/repomd.xml.metalink --ignoregroups=true

View File

@ -1,5 +1,5 @@
Name: lorax-templates-qubes
Version: 4.0.5
Version: 4.0.6
Release: 1%{?dist}
Summary: Lorax templates for Qubes installation ISO

View File

@ -61,12 +61,12 @@ menu separator # insert an empty line
label linux
menu label ^Install @PRODUCT@ @VERSION@
kernel mboot.c32
append xen.gz console=none --- vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb --- initrd.img
append xen.gz console=none --- vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb plymouth.ignore-serial-consoles --- initrd.img
label check
menu label Test this ^media & install @PRODUCT@ @VERSION@
menu default
kernel mboot.c32
append xen.gz console=none --- vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb rd.live.check --- initrd.img
append xen.gz console=none --- vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb plymouth.ignore-serial-consoles rd.live.check --- initrd.img
menu separator # insert an empty line

View File

@ -3,12 +3,12 @@ default=qubes-verbose
[qubes-check]
options=console=none
kernel=vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb rd.live.check
kernel=vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb plymouth.ignore-serial-consoles rd.live.check
ramdisk=initrd.img
[qubes]
options=console=none
kernel=vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb
kernel=vmlinuz @ROOT@ i915.alpha_support=1 quiet rhgb plymouth.ignore-serial-consoles
ramdisk=initrd.img
[qubes-verbose]

View File

@ -228,7 +228,7 @@ class QubesOsSpoke(FirstbootOnlySpokeMixIn, NormalSpoke):
self.qubes_user = None
self.qubes_gid = None
self.default_template = 'fedora-29'
self.default_template = 'fedora-30'
self.set_stage("Start-up")
self.done = False

View File

@ -1,5 +1,5 @@
Name: qubes-anaconda-addon
Version: 4.0.9
Version: 4.0.10
Release: 1%{?dist}
Summary: Anaconda addon useful for Qubes OS specific setup procedures

View File

@ -1398,24 +1398,31 @@
<packagereq type="mandatory">qubes-gui-dom0</packagereq>
<packagereq type="mandatory">qubes-desktop-linux-manager</packagereq>
<packagereq type="mandatory">qubes-mgmt-salt-dom0</packagereq>
<packagereq type="mandatory">qubes-template-fedora-29</packagereq>
<packagereq type="mandatory">qubes-template-fedora-30</packagereq>
<packagereq type="default">qubes-gpg-split-dom0</packagereq>
<packagereq type="default">qubes-img-converter-dom0</packagereq>
<packagereq type="default">qubes-input-proxy</packagereq>
<packagereq type="default">qubes-pdf-converter-dom0</packagereq>
<packagereq type="default">qubes-usb-proxy-dom0</packagereq>
<packagereq type="default">libvirt-client</packagereq>
<!--
We add 'kernel-latest' and 'kernel-latest-qubes-vm' only as
optional because it is not included in stable official releases
but only in testing releases with latest kernels
-->
<packagereq type="optional">kernel-latest</packagereq>
<packagereq type="optional">kernel-latest-qubes-vm</packagereq>
</packagelist>
</group>
<group>
<id>debian</id>
<name>Debian 9 (stretch) template</name>
<description>Debian 9 (stretch) template</description>
<name>Debian 10 (buster) template</name>
<description>Debian 10 (buster) template</description>
<default>true</default>
<uservisible>true</uservisible>
<packagelist>
<packagereq>qubes-template-debian-9</packagereq>
<packagereq>qubes-template-debian-10</packagereq>
</packagelist>
</group>
@ -1426,8 +1433,8 @@
<description>Whonix templates (gateway and workstation)</description>
<uservisible>true</uservisible>
<packagelist>
<packagereq>qubes-template-whonix-gw-14</packagereq>
<packagereq>qubes-template-whonix-ws-14</packagereq>
<packagereq>qubes-template-whonix-gw-15</packagereq>
<packagereq>qubes-template-whonix-ws-15</packagereq>
</packagelist>
</group>

View File

@ -1,7 +1,7 @@
[qubes-dom0-current]
name = Qubes Dom0 Repository (updates)
#baseurl = https://yum.qubes-os.org/r$releasever/current/dom0/%DIST%
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/current/dom0/%DIST%
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/current/dom0/%DIST%
metalink = https://yum.qubes-os.org/r$releasever/current/dom0/%DIST%/repodata/repomd.xml.metalink
enabled = 1
metadata_expire = 7d
@ -11,7 +11,7 @@ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-primary
[qubes-dom0-current-testing]
name = Qubes Dom0 Repository (updates-testing)
#baseurl = https://yum.qubes-os.org/r$releasever/current-testing/dom0/%DIST%
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/current-testing/dom0/%DIST%
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/current-testing/dom0/%DIST%
metalink = https://yum.qubes-os.org/r$releasever/current-testing/dom0/%DIST%/repodata/repomd.xml.metalink
enabled = 0
metadata_expire = 7d
@ -21,7 +21,7 @@ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-primary
[qubes-dom0-security-testing]
name = Qubes Dom0 Repository (security-testing)
#baseurl = https://yum.qubes-os.org/r$releasever/security-testing/dom0/%DIST%
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/security-testing/dom0/%DIST%
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/security-testing/dom0/%DIST%
metalink = https://yum.qubes-os.org/r$releasever/security-testing/dom0/%DIST%/repodata/repomd.xml.metalink
enabled = 0
metadata_expire = 7d
@ -31,7 +31,7 @@ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-primary
[qubes-dom0-unstable]
name = Qubes Dom0 Repository (unstable)
#baseurl = https://yum.qubes-os.org/r$releasever/unstable/dom0/%DIST%
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/unstable/dom0/%DIST%
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/unstable/dom0/%DIST%
metalink = https://yum.qubes-os.org/r$releasever/unstable/dom0/%DIST%/repodata/repomd.xml.metalink
enabled = 0
metadata_expire = 7d

View File

@ -5,7 +5,7 @@
Summary: Qubes release files
Name: qubes-release
Version: %{dist_version}
Release: 7
Release: 8
License: GPLv2
Group: System Environment/Base
Source0: %{name}-%{version}.tar.bz2

View File

@ -1,7 +1,7 @@
[qubes-templates-itl]
name = Qubes Templates repository
#baseurl = https://yum.qubes-os.org/r$releasever/templates-itl
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/templates-itl
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/templates-itl
metalink = https://yum.qubes-os.org/r$releasever/templates-itl/repodata/repomd.xml.metalink
enabled = 1
fastestmirror = 1
@ -12,7 +12,7 @@ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-primary
[qubes-templates-itl-testing]
name = Qubes Templates repository
#baseurl = https://yum.qubes-os.org/r$releasever/templates-itl-testing
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/templates-itl-testing
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/templates-itl-testing
metalink = https://yum.qubes-os.org/r$releasever/templates-itl-testing/repodata/repomd.xml.metalink
enabled = 0
fastestmirror = 1
@ -22,7 +22,7 @@ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-primary
[qubes-templates-community]
name = Qubes Community Templates repository
#baseurl = https://yum.qubes-os.org/r$releasever/templates-community
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/templates-community
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/templates-community
metalink = https://yum.qubes-os.org/r$releasever/templates-community/repodata/repomd.xml.metalink
enabled = 0
fastestmirror = 1
@ -33,7 +33,7 @@ gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-qubes-$releasever-templates-communi
[qubes-templates-community-testing]
name = Qubes Community Templates repository
#baseurl = https://yum.qubes-os.org/r$releasever/templates-community-testing
#baseurl = http://yum.sik5nlgfc5qylnnsr57qrbm64zbdx6t4lreyhpon3ychmxmiem7tioad.onion/r$releasever/templates-community-testing
#baseurl = http://yum.qubesosfasa4zl44o4tws22di6kepyzfeqv3tg4e3ztknltfxqrymdad.onion/r$releasever/templates-community-testing
metalink = https://yum.qubes-os.org/r$releasever/templates-community-testing/repodata/repomd.xml.metalink
enabled = 0
fastestmirror = 1