Compare commits

...

8 Commits
rawhide ... f29

Author SHA1 Message Date
David Lehman b11e8f4d65 Only call mpath plugin when it is available. (#1697378) 2019-05-08 11:34:00 -04:00
Vojtech Trefny 659178a944 Ensure correct type of mpath cache member list 2019-03-21 15:11:26 +01:00
Vojtech Trefny 6cce14855c Support legacy MBR (msdos) as part of UEFI to enable hybrid builds 2019-03-11 15:27:40 +01:00
Vojtech Trefny 0deb3e7441 Don't crash if blockdev mpath plugin isn't available (#1684552) 2019-03-04 08:18:07 +01:00
Vojtech Trefny b4b71f97df New version 3.1.2
- Fix reading LV attributes in LVMVolumeGroupDevice.status (vtrefny)
- Do not try to login to iBFTs with active session (vtrefny)
- Fix xfs sync of chrooted mountpoint. (dlehman)
- Only update sysfs path in ctor for active devices. (dlehman)
- Fix new pep8/pycodestyle warnings (vtrefny)
- Ignore PEP8 W504 warning ("line break after binary operator") (vtrefny)
- pylint: Allow loading all C extensions (vtrefny)
- Use 'pycodestyle' instead of 'pep8' (vtrefny)
- Fix failing populator test without nvdimm plugin (vtrefny)
- Add 'srpm' and 'rpm' targets to Makefile for building (S)RPMs (vtrefny)
- Fix crash on reset on systems without nvdimm plugin (vtrefny)
- Use the size info of internal LVs when getting space usage for existing LVs (v.podzimek)
- Calculate the number of RAID PVs from the origin for cached LVs (v.podzimek)
- Make raid_level a property of an LV object (v.podzimek)
- Add a test for DeviceTree.get_related_disks. (dlehman)
- Fix ixgbe/bnx2fc fcoe disk detection (#1651506) (rvykydal)
- Use RAID name for partitions on an MD array (vtrefny)
- Move btrfs name validation to devicelibs (vtrefny)
- Don't try to set selinux context for nodev or vfat file systems. (dlehman)
- Only try to set selinux context for lost+found on ext file systems. (dlehman)
- Wipe all stale metadata after creating md array. (#1639682) (dlehman)
- Don't try to update sysfs path for non-block devices. (#1579375) (dlehman)
- Don't raise errors without messages (vponcova)
- Install ndctl when NVDIMMs are used. (dlehman)
- Deactivate incomplete VGs along with everything else. (dlehman)
- Work around udev timing issues. (dlehman)
- Fix options for ISCSI functions (#1632656) (vtrefny)
- Use format.status when checking for PV status (vtrefny)
- Remove Anaconda flags (vponcova)
- Remove square brackets when matching internal LVs (v.podzimek)
2018-12-12 10:58:46 +01:00
Vojtech Trefny e755018dd6 Fix options for ISCSI functions (#1632656) 2018-10-08 15:18:18 +02:00
Vojtech Trefny ce22d123e9 New version 3.1.1
- Check device dependencies only for device actions (vtrefny)
- Allow removing btrfs volumes without btrfs support (vtrefny)
- Adjust LVMPhysicalVolumeMethodsTestCase to new pvcreate option (vtrefny)
- add `-y' to lvm.pvcreate (hongxu.jia)
- Drop omap partition table tests on ARM platforms (pbrobinson)
- Update disk label tests for ARM platforms (pbrobinson)
- Ignore pylint 'no-value-for-parameter' warning (vtrefny)
- arm: add support for EFI on ARMv7 (pbrobinson)
- Aarch64 platforms: Fix gpt defaults for 64 bit arm platforms (pbrobinson)
- arch: arm: drop get_arm_machine function (pbrobinson)
- arch: arm: drop omap specifics for partitioning (pbrobinson)
- Create a separate availability check for dmraid support (vtrefny)
2018-09-26 13:41:03 +02:00
Vojtech Trefny 881f7ade1b arm: add support for EFI on ARMv7 (probinson)
Aarch64 platforms: Fix gpt defaults for 64 bit arm platforms (probinson)
arch: arm: drop get_arm_machine function (probinson)
arch: arm: drop omap specifics for partitioning (probinson)
2018-08-30 17:04:21 +02:00
9 changed files with 442 additions and 3 deletions

2
.gitignore vendored
View File

@ -110,3 +110,5 @@
/blivet-3.1.0.b1.tar.gz
/blivet-3.1.0.b2.tar.gz
/blivet-3.1.0.tar.gz
/blivet-3.1.1.tar.gz
/blivet-3.1.2.tar.gz

View File

@ -0,0 +1,33 @@
From dfeaf948d05c20a243c64589970f45ae98b94dfb Mon Sep 17 00:00:00 2001
From: David Lehman <dlehman@redhat.com>
Date: Thu, 2 May 2019 13:03:54 -0400
Subject: [PATCH] Only call mpath plugin when it is available. (#1697378)
---
blivet/populator/populator.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/blivet/populator/populator.py b/blivet/populator/populator.py
index cdb5b79f..ebe205e6 100644
--- a/blivet/populator/populator.py
+++ b/blivet/populator/populator.py
@@ -44,6 +44,7 @@ from .. import udev
from .. import util
from ..flags import flags
from ..storage_log import log_method_call
+from ..tasks import availability
from ..threads import SynchronizedMeta
from .helpers import get_device_helper, get_format_helper
from ..static_data import lvs_info, pvs_info, luks_data, mpath_members
@@ -426,7 +427,7 @@ class PopulatorMixin(object):
self.drop_lvm_cache()
mpath_members.drop_cache()
- if flags.auto_dev_updates:
+ if flags.auto_dev_updates and availability.BLOCKDEV_MPATH_PLUGIN.available:
blockdev.mpath.set_friendly_names(flags.multipath_friendly_names)
self.setup_disk_images()
--
2.20.1

View File

@ -0,0 +1,42 @@
From 5b0b1ffcf0d27306e52476984ebd8eb3af4a11aa Mon Sep 17 00:00:00 2001
From: David Lehman <dlehman@redhat.com>
Date: Mon, 25 Feb 2019 11:14:30 -0500
Subject: [PATCH] Don't crash if blockdev mpath plugin isn't available.
(#1672971)
---
blivet/static_data/mpath_info.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/blivet/static_data/mpath_info.py b/blivet/static_data/mpath_info.py
index b16f3c65..49ba4709 100644
--- a/blivet/static_data/mpath_info.py
+++ b/blivet/static_data/mpath_info.py
@@ -27,6 +27,8 @@
import logging
log = logging.getLogger("blivet")
+from ..tasks import availability
+
class MpathMembers(object):
"""A cache for querying multipath member devices"""
@@ -40,7 +42,7 @@ def is_mpath_member(self, device):
:param str device: path of the device to query
"""
- if self._members is None:
+ if self._members is None and availability.BLOCKDEV_MPATH_PLUGIN.available:
self._members = set(blockdev.mpath.get_mpath_members())
device = os.path.realpath(device)
@@ -56,7 +58,8 @@ def update_cache(self, device):
"""
device = os.path.realpath(device)
device = device[len("/dev/"):]
- if blockdev.mpath.is_mpath_member(device):
+
+ if availability.BLOCKDEV_MPATH_PLUGIN.available and blockdev.mpath.is_mpath_member(device):
self._members.add(device)
def drop_cache(self):

View File

@ -0,0 +1,42 @@
From 48d19a9835ebb6743ec03e4c9182c8cc74db4cf8 Mon Sep 17 00:00:00 2001
From: Vojtech Trefny <vtrefny@redhat.com>
Date: Wed, 3 Oct 2018 14:11:08 +0200
Subject: [PATCH] Fix options for ISCSI functions (#1632656)
Correct mutual authentication options in UDisks are
"reverse-username" and "reverse-password".
---
blivet/iscsi.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/blivet/iscsi.py b/blivet/iscsi.py
index b979e01c..ca51f8ed 100644
--- a/blivet/iscsi.py
+++ b/blivet/iscsi.py
@@ -385,9 +385,9 @@ class iSCSI(object):
if password:
auth_info["password"] = GLib.Variant("s", password)
if r_username:
- auth_info["r_username"] = GLib.Variant("s", r_username)
+ auth_info["reverse-username"] = GLib.Variant("s", r_username)
if r_password:
- auth_info["r_password"] = GLib.Variant("s", r_password)
+ auth_info["reverse-password"] = GLib.Variant("s", r_password)
args = GLib.Variant("(sqa{sv})", (ipaddr, int(port), auth_info))
nodes, _n_nodes = self._call_initiator_method("DiscoverSendTargets", args)
@@ -423,9 +423,9 @@ class iSCSI(object):
if password:
auth_info["password"] = GLib.Variant("s", password)
if r_username:
- auth_info["r_username"] = GLib.Variant("s", r_username)
+ auth_info["reverse-username"] = GLib.Variant("s", r_username)
if r_password:
- auth_info["r_password"] = GLib.Variant("s", r_password)
+ auth_info["reverse-password"] = GLib.Variant("s", r_password)
try:
self._login(node, auth_info)
--
2.17.1

181
0002-arm7-cleanups.patch Normal file
View File

@ -0,0 +1,181 @@
From ec8e27664a6a551647ace23bfd5d16036db95bd6 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Tue, 7 Aug 2018 15:11:56 +0100
Subject: [PATCH 1/4] arch: arm: drop omap specifics for partitioning
We've long stopped supporting or using any specifics around OMAP
ARM machines and all ARM platforms support the extlinux means of
doing things one way or another.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
blivet/arch.py | 4 ----
blivet/devices/partition.py | 3 ---
2 files changed, 7 deletions(-)
diff --git a/blivet/arch.py b/blivet/arch.py
index 20fe4f57..f30b2d8b 100644
--- a/blivet/arch.py
+++ b/blivet/arch.py
@@ -352,10 +352,6 @@ def is_ipseries():
return is_ppc() and get_ppc_machine() in ("iSeries", "pSeries")
-def is_omap_arm():
- return is_arm() and get_arm_machine() == "omap"
-
-
def get_arch():
"""
:return: The hardware architecture
diff --git a/blivet/devices/partition.py b/blivet/devices/partition.py
index 47ff547b..623e1c9d 100644
--- a/blivet/devices/partition.py
+++ b/blivet/devices/partition.py
@@ -421,9 +421,6 @@ class PartitionDevice(StorageDevice):
# On ARM images '/' must be the last partition.
if self.format.mountpoint == "/":
weight = -100
- elif (arch.is_omap_arm() and
- self.format.mountpoint == "/boot/uboot" and self.format.type == "vfat"):
- weight = 5000
elif arch.is_ppc():
if arch.is_pmac() and self.format.type == "appleboot":
weight = 5000
--
2.18.0
From be145b613ceea45edf4e2d522d28113300d706fa Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 16 Aug 2018 14:32:19 +0100
Subject: [PATCH 2/4] arch: arm: drop get_arm_machine function
The get_arm_machine function was used when we had to have detection for which
arm specific kernel to install. The last userr of this was the omap check for
special partitioning which is no longer used due to extlinux support so we can
now drop this function too.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
blivet/arch.py | 22 ----------------------
blivet/flags.py | 2 --
2 files changed, 24 deletions(-)
diff --git a/blivet/arch.py b/blivet/arch.py
index f30b2d8b..55ce8108 100644
--- a/blivet/arch.py
+++ b/blivet/arch.py
@@ -33,7 +33,6 @@ from __future__ import absolute_import
import os
-from .flags import flags
from .storage_log import log_exception_info
import logging
@@ -182,27 +181,6 @@ def is_aarch64():
return os.uname()[4] == 'aarch64'
-def get_arm_machine():
- """
- :return: The ARM processor variety type, or None if not ARM.
- :rtype: string
-
- """
- if not is_arm():
- return None
-
- if flags.arm_platform:
- return flags.arm_platform
-
- arm_machine = os.uname()[2].rpartition('.')[2]
-
- if arm_machine.startswith('arm'):
- # @TBD - Huh? Don't you want the arm machine name here?
- return None
- else:
- return arm_machine
-
-
def is_cell():
"""
:return: True if the hardware is the Cell platform, False otherwise.
diff --git a/blivet/flags.py b/blivet/flags.py
index 18401218..4e26d82f 100644
--- a/blivet/flags.py
+++ b/blivet/flags.py
@@ -57,8 +57,6 @@ class Flags(object):
self.jfs = True
self.reiserfs = True
- self.arm_platform = None
-
self.gpt = False
# for this flag to take effect,
--
2.18.0
From 34595cfef911f9512558b02216eaf58d0fdd6786 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 16 Aug 2018 14:35:30 +0100
Subject: [PATCH 3/4] Aarch64 platforms: Fix gpt defaults for 64 bit arm
platforms
The 46165f589d commit added support for msdos needed on some aarch64 devices
but it messed up the gpt defaults, this was fixed in 4908746c3a but this now
defaults back to msdos so we put in an aarch64 options to put gpt first again.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
blivet/formats/disklabel.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/blivet/formats/disklabel.py b/blivet/formats/disklabel.py
index 44f9834c..e93a4c13 100644
--- a/blivet/formats/disklabel.py
+++ b/blivet/formats/disklabel.py
@@ -223,6 +223,8 @@ class DiskLabel(DeviceFormat):
label_types = ["msdos", "gpt"]
if arch.is_pmac():
label_types = ["mac"]
+ elif arch.is_aarch64():
+ label_types = ["gpt", "msdos"]
elif arch.is_efi() and not arch.is_aarch64():
label_types = ["gpt"]
elif arch.is_s390():
--
2.18.0
From 461623d49963618a30bd960d48c6d34f1d076917 Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 16 Aug 2018 14:38:16 +0100
Subject: [PATCH 4/4] arm: add support for EFI on ARMv7
We now can support EFI for ARMv7 so add/enabled the checks for ARM too.
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
blivet/formats/disklabel.py | 2 ++
1 file changed, 2 insertions(+)
diff --git a/blivet/formats/disklabel.py b/blivet/formats/disklabel.py
index e93a4c13..e13ab2f8 100644
--- a/blivet/formats/disklabel.py
+++ b/blivet/formats/disklabel.py
@@ -225,6 +225,8 @@ class DiskLabel(DeviceFormat):
label_types = ["mac"]
elif arch.is_aarch64():
label_types = ["gpt", "msdos"]
+ elif arch.is_efi() and arch.is_arm():
+ label_types = ["msdos", "gpt"]
elif arch.is_efi() and not arch.is_aarch64():
label_types = ["gpt"]
elif arch.is_s390():
--
2.18.0

View File

@ -0,0 +1,40 @@
From 2050395b053e4813da20f1c3bc39d74a8e45803f Mon Sep 17 00:00:00 2001
From: Peter Robinson <pbrobinson@gmail.com>
Date: Thu, 7 Mar 2019 20:57:59 +0000
Subject: [PATCH] Support legacy MBR (msdos) as part of UEFI to enable hybrid
builds
The UEFI spec supports legacy MBR (msdos) in section 5.2 of the UEFI 2.7 spec [1].
There's a number of use cases where we might boot on a UEFI device but want to
support, but not by default, the creation of images using legacy MBR partitions.
One of these use cases is cloud images where we can produce a single image
tha will run on UEFI supported, including secure-boot, clouds but also
support AWS which only supports MBR partitioning schemes [2] and in the current
config anaconda fails the install where this is a perfectly valid and widely
supported deployment mechanism.
So enable the ability to use legacy msdos partitioning schemes, but don't use
it for default installs, so people may consume this mechanism using kickstarts
rather than having the install fail for a valid use case.
[1] https://uefi.org/sites/default/files/resources/UEFI%20Spec%202_7_A%20Sept%206.pdf
[2] https://docs.aws.amazon.com/vm-import/latest/userguide/vmie_prereqs.html
Signed-off-by: Peter Robinson <pbrobinson@gmail.com>
---
blivet/formats/disklabel.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/blivet/formats/disklabel.py b/blivet/formats/disklabel.py
index 75867d6a..8186d1a1 100644
--- a/blivet/formats/disklabel.py
+++ b/blivet/formats/disklabel.py
@@ -228,7 +228,7 @@ def get_platform_label_types(cls):
elif arch.is_efi() and arch.is_arm():
label_types = ["msdos", "gpt"]
elif arch.is_efi() and not arch.is_aarch64():
- label_types = ["gpt"]
+ label_types = ["gpt", "msdos"]
elif arch.is_s390():
label_types = ["msdos", "dasd"]

View File

@ -0,0 +1,28 @@
From d01281a69e317d7bae4a7698edb6583b6310d5c1 Mon Sep 17 00:00:00 2001
From: David Lehman <dlehman@redhat.com>
Date: Tue, 19 Mar 2019 11:51:47 -0400
Subject: [PATCH] Ensure correct type of mpath cache member list.
Related: rhbz#1672971
---
blivet/static_data/mpath_info.py | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/blivet/static_data/mpath_info.py b/blivet/static_data/mpath_info.py
index 49ba4709..64958ba8 100644
--- a/blivet/static_data/mpath_info.py
+++ b/blivet/static_data/mpath_info.py
@@ -42,8 +42,11 @@ def is_mpath_member(self, device):
:param str device: path of the device to query
"""
- if self._members is None and availability.BLOCKDEV_MPATH_PLUGIN.available:
- self._members = set(blockdev.mpath.get_mpath_members())
+ if self._members is None:
+ if availability.BLOCKDEV_MPATH_PLUGIN.available:
+ self._members = set(blockdev.mpath.get_mpath_members())
+ else:
+ self._members = set()
device = os.path.realpath(device)
device = device[len("/dev/"):]

View File

@ -19,11 +19,11 @@
Summary: A python module for system storage configuration
Name: python-blivet
Url: https://storageapis.wordpress.com/projects/blivet
Version: 3.1.0
Version: 3.1.2
#%%global prerelease .b2
# prerelease, if defined, should be something like .a1, .b1, .b2.dev1, or .c2
Release: 1%{?prerelease}%{?dist}
Release: 5%{?prerelease}%{?dist}
Epoch: 1
License: LGPLv2+
Group: System Environment/Libraries
@ -31,6 +31,10 @@ Group: System Environment/Libraries
%global realversion %{version}%{?prerelease}
Source0: http://github.com/storaged-project/blivet/archive/%{realname}-%{realversion}.tar.gz
Patch0: 0001-force-lvm-plugin.patch
Patch1: 0002-Dont-crash-if-blockdev-mpath-plugin-isnt-available.patch
Patch2: 0003-Support-legacy-MBR-as-part-of-UEFI.patch
Patch3: 0004-Ensure-correct-type-of-mpath-cache-member-list.patch
Patch4: 0001-Only-call-mpath-plugin-when-it-is-available.-1697378.patch
# Versions of required components (done so we make sure the buildrequires
# match the requires versions of things).
@ -191,6 +195,73 @@ configuration.
%endif
%changelog
* Wed May 08 2019 David Lehman <dlehman@redhat.com> - 3.1.2-5
- Only call mpath plugin when it is available. (#1697378)
* Thu Mar 21 2019 Vojtech Trefny <vtrefny@redhat.com> - 3.1.2-4
- Ensure correct type of mpath cache member list
* Mon Mar 11 2019 Vojtech Trefny <vtrefny@redhat.com> - 3.1.2-3
- Support legacy MBR (msdos) as part of UEFI to enable hybrid builds
* Mon Mar 04 2019 Vojtech Trefny <vtrefny@redhat.com> - 3.1.2-2
- Don't crash if blockdev mpath plugin isn't available (dlehman)
* Wed Dec 12 2018 Vojtech Trefny <vtrefny@redhat.com> - 3.1.2-1
- Fix reading LV attributes in LVMVolumeGroupDevice.status (vtrefny)
- Do not try to login to iBFTs with active session (vtrefny)
- Fix xfs sync of chrooted mountpoint. (dlehman)
- Only update sysfs path in ctor for active devices. (dlehman)
- Fix new pep8/pycodestyle warnings (vtrefny)
- Ignore PEP8 W504 warning ("line break after binary operator") (vtrefny)
- pylint: Allow loading all C extensions (vtrefny)
- Use 'pycodestyle' instead of 'pep8' (vtrefny)
- Fix failing populator test without nvdimm plugin (vtrefny)
- Add 'srpm' and 'rpm' targets to Makefile for building (S)RPMs (vtrefny)
- Fix crash on reset on systems without nvdimm plugin (vtrefny)
- Use the size info of internal LVs when getting space usage for existing LVs (v.podzimek)
- Calculate the number of RAID PVs from the origin for cached LVs (v.podzimek)
- Make raid_level a property of an LV object (v.podzimek)
- Add a test for DeviceTree.get_related_disks. (dlehman)
- Fix ixgbe/bnx2fc fcoe disk detection (#1651506) (rvykydal)
- Use RAID name for partitions on an MD array (vtrefny)
- Move btrfs name validation to devicelibs (vtrefny)
- Don't try to set selinux context for nodev or vfat file systems. (dlehman)
- Only try to set selinux context for lost+found on ext file systems. (dlehman)
- Wipe all stale metadata after creating md array. (#1639682) (dlehman)
- Don't try to update sysfs path for non-block devices. (#1579375) (dlehman)
- Don't raise errors without messages (vponcova)
- Install ndctl when NVDIMMs are used. (dlehman)
- Deactivate incomplete VGs along with everything else. (dlehman)
- Work around udev timing issues. (dlehman)
- Fix options for ISCSI functions (#1632656) (vtrefny)
- Use format.status when checking for PV status (vtrefny)
- Remove Anaconda flags (vponcova)
- Remove square brackets when matching internal LVs (v.podzimek)
* Mon Oct 08 2018 Vojtech Trefny <vtrefny@redhat.com> - 3.1.1-2
- Fix options for ISCSI functions (#1632656) (vtrefny)
* Wed Sep 26 2018 Vojtech Trefny <vtrefny@redhat.com> - 3.1.1-1
- Check device dependencies only for device actions (vtrefny)
- Allow removing btrfs volumes without btrfs support (vtrefny)
- Adjust LVMPhysicalVolumeMethodsTestCase to new pvcreate option (vtrefny)
- add `-y' to lvm.pvcreate (hongxu.jia)
- Drop omap partition table tests on ARM platforms (pbrobinson)
- Update disk label tests for ARM platforms (pbrobinson)
- Ignore pylint 'no-value-for-parameter' warning (vtrefny)
- arm: add support for EFI on ARMv7 (pbrobinson)
- Aarch64 platforms: Fix gpt defaults for 64 bit arm platforms (pbrobinson)
- arch: arm: drop get_arm_machine function (pbrobinson)
- arch: arm: drop omap specifics for partitioning (pbrobinson)
- Create a separate availability check for dmraid support (vtrefny)
* Thu Aug 30 2018 Vojtech Trefny <vtrefny@redhat.com> - 3.1.0-2
- arm: add support for EFI on ARMv7 (probinson)
- Aarch64 platforms: Fix gpt defaults for 64 bit arm platforms (probinson)
- arch: arm: drop get_arm_machine function (probinson)
- arch: arm: drop omap specifics for partitioning (probinson)
* Mon Aug 13 2018 Vojtech Trefny <vtrefny@redhat.com> - 3.1.0-1
- Allow configuring default LUKS2 PBKDF arguments using luks_data (vtrefny)
- Fix the populate_kickstart method in LUKS (vtrefny)

View File

@ -1 +1 @@
SHA512 (blivet-3.1.0.tar.gz) = cee3ba770514f6168d78cfa0c6f0205149e4be14203bec6c8c2a2b66d44bdbceaff5bf44ba2bcb7799eddfa54bab16692a7d04f2665caf4b6a4d1a317cad2686
SHA512 (blivet-3.1.2.tar.gz) = 338f477866b26f8cafc6dc23eb4fb3f6ec5e04281d2d61cc17370c0e51e7a8bedc03621ebf7a6b61b42dcf79220727a5bb454ac35b1a662e1584f49c88720365