Update python-productmd to 1.3-1

This commit is contained in:
Lubomír Sedlář 2016-11-23 14:09:55 +01:00
parent 7420ff4034
commit d03aae7fc8
5 changed files with 33 additions and 233 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@
/productmd-1.0.tar.gz
/productmd-1.1.tar.gz
/productmd-1.2.tar.bz2
/python-productmd-1.3.tar.gz

View File

@ -1,75 +0,0 @@
From c01b76db26893f8257c17dcff838005625adc529 Mon Sep 17 00:00:00 2001
From: Dennis Gilmore <dennis@ausil.us>
Date: Thu, 18 Feb 2016 19:50:52 -0600
Subject: [PATCH] update the other two _validate_version functions to allow for
Rawhide to be valid
Fix up the tests
Signed-off-by: Dennis Gilmore <dennis@ausil.us>
---
productmd/common.py | 3 ++-
productmd/treeinfo.py | 3 ++-
tests/test_header.py | 10 +++++-----
3 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/productmd/common.py b/productmd/common.py
index 3447c05..b23d71f 100644
--- a/productmd/common.py
+++ b/productmd/common.py
@@ -195,7 +195,8 @@ class Header(MetadataBase):
def _validate_version(self):
self._assert_type("version", six.string_types)
- self._assert_matches_re("version", [r"^\d+\.\d+$"])
+ if re.match('^\d', self.version):
+ self._assert_matches_re("version", [r"^\d+(\.\d+)*$"])
@property
def version_tuple(self):
diff --git a/productmd/treeinfo.py b/productmd/treeinfo.py
index a14305e..67f5ed9 100644
--- a/productmd/treeinfo.py
+++ b/productmd/treeinfo.py
@@ -166,7 +166,8 @@ class BaseProduct(productmd.common.MetadataBase):
def _validate_version(self):
self._assert_type("version", list(six.string_types))
- self._assert_matches_re("version", [r"^\d+(\.\d+)*$"])
+ if re.match('^\d', self.version):
+ self._assert_matches_re("version", [r"^\d+(\.\d+)*$"])
def _validate_short(self):
self._assert_type("short", list(six.string_types))
diff --git a/tests/test_header.py b/tests/test_header.py
index 206307a..5c18dcf 100755
--- a/tests/test_header.py
+++ b/tests/test_header.py
@@ -40,19 +40,19 @@ class TestHeader(unittest.TestCase):
self.assertRaises(TypeError, hdr.validate)
# invalid version
- hdr.version = "first"
- self.assertRaises(ValueError, hdr.validate)
-
hdr.version = "1.alpha2"
self.assertRaises(ValueError, hdr.validate)
+ # valid version
hdr.version = "1"
- self.assertRaises(ValueError, hdr.validate)
+ hdr.validate()
- # valid version
hdr.version = "1.22"
hdr.validate()
+ hdr.version = "first"
+ hdr.validate()
+
def test_deserialize(self):
hdr = Header(None)
data = {
--
2.5.0

View File

@ -1,126 +0,0 @@
From e0e360766b8e3882f7a947ba00c82ae59f392d80 Mon Sep 17 00:00:00 2001
From: Adam Williamson <awilliam@redhat.com>
Date: Sun, 28 Feb 2016 12:48:42 -0800
Subject: [PATCH] add 'subvariant' property to images
This is to solve a problem we have with the Fedora composes.
There are 'Spins' and 'Labs' variants which produce several
live images and ARM appliances with differing content. With the
current metadata, there is no good way to tell the KDE live
image from the Xfce or LXDE live images; the only property
which indicates this is the 'path', but that has lots of other
information in it and is not trivially parseable (as image
names don't really strictly follow the naming policy you
cannot strictly tell what element of the image file name is
the 'subvariant').
Thus we add a 'subvariant' property which Pungi will populate as
appropriate. For many images the 'subvariant' will be the variant,
but for Spins and Labs it will indicate the actual content of
each image.
The image metadata version should probably change with this,
but I couldn't see the right way to do that (surely I don't
just universally bump it to 1, 1 in common.py?) Pungi will
also need a few corresponding changes, I will send a Pagure
PR for those.
---
doc/images-1.0.rst | 1 +
productmd/images.py | 7 +++++++
tests/test_images.py | 12 +++++++-----
3 files changed, 15 insertions(+), 5 deletions(-)
diff --git a/doc/images-1.0.rst b/doc/images-1.0.rst
index fa04ad3..6ac36b7 100644
--- a/doc/images-1.0.rst
+++ b/doc/images-1.0.rst
@@ -40,6 +40,7 @@ in order to read and diff images.json files easily.
"implant_md5": <str|null>, # md5 checksum implanted directly on media (see implantisomd5 and checkisomd5 commands)
"mtime": <int>, # mtime of the image stored as a decimal unix timestamp
"path": <str>, # relative path to the image
+ "subvariant": <str>, # image content (e.g. 'Workstation' or 'KDE')
"size": <int>, # file size of the image
"type": <str>, # see productmd.images.SUPPORTED_IMAGE_TYPES
"volume_id": <str|null> # volume ID; null if not available/applicable
diff --git a/productmd/images.py b/productmd/images.py
index ca8fbd4..df825bb 100644
--- a/productmd/images.py
+++ b/productmd/images.py
@@ -119,6 +119,7 @@ def __init__(self, parent):
self.checksums = {} #: (*str*) -- Release name, for example: "Fedora", "Red Hat Enterprise Linux"
self.implant_md5 = None #: (*str* or *None*) -- value of implanted md5
self.bootable = False #: (*bool=False*) --
+ self.subvariant = None #: (*str*) -- image contents, may be same as variant or e.g. 'KDE', 'LXDE'
def _validate_path(self):
self._assert_type("path", list(six.string_types))
@@ -166,6 +167,10 @@ def _validate_implant_md5(self):
def _validate_bootable(self):
self._assert_type("bootable", [bool])
+ def _validate_subvariant(self):
+ self._assert_type("subvariant", list(six.string_types))
+ self._assert_not_blank("subvariant")
+
def serialize(self, parser):
data = parser
self.validate()
@@ -182,6 +187,7 @@ def serialize(self, parser):
"checksums": self.checksums,
"implant_md5": self.implant_md5,
"bootable": self.bootable,
+ "subvariant": self.subvariant,
}
data.append(result)
@@ -198,6 +204,7 @@ def deserialize(self, data):
self.checksums = data["checksums"]
self.implant_md5 = data["implant_md5"]
self.bootable = bool(data["bootable"])
+ self.subvariant = data["subvariant"]
self.validate()
def add_checksum(self, root, checksum_type, checksum_value):
diff --git a/tests/test_images.py b/tests/test_images.py
index 614ab21..603297f 100755
--- a/tests/test_images.py
+++ b/tests/test_images.py
@@ -72,7 +72,7 @@ def test_fedora_20(self):
im.compose.respin = 0
i = Image(im)
- i.path = "Fedora/x86_64/iso/Fedora-20-x86_64-DVD.iso"
+ i.path = "Fedora/x86_64/iso/Fedora-Server-dvd-x86_64-20.iso"
i.mtime = 1410855216
i.size = 4603248640
i.arch = "x86_64"
@@ -80,7 +80,8 @@ def test_fedora_20(self):
i.format = "iso"
i.disc_number = 1
i.disc_count = 1
- i.volume_id = "Fedora 20 x86_64"
+ i.volume_id = "Fedora-S-dvd-x86_64-20"
+ i.subvariant = "Server"
# checksums
i.add_checksum(root=None, checksum_type="sha256", checksum_value="f2eeed5102b8890e9e6f4b9053717fe73031e699c4b76dc7028749ab66e7f917")
@@ -98,15 +99,16 @@ def test_fedora_20(self):
im.add("Fedora", "x86_64", i)
i = Image(im)
- i.path = "Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso"
+ i.path = "Fedora/x86_64/iso/Fedora-Server-boot-x86_64-20.iso"
i.mtime = 1410855243
i.size = 336592896
i.arch = "x86_64"
- i.type = "netinst"
+ i.type = "boot"
i.format = "iso"
i.disc_number = 1
i.disc_count = 1
- i.volume_id = "Fedora 20 x86_64"
+ i.volume_id = "Fedora-S-boot-x86_64-20"
+ i.subvariant = "Server"
# checksums
i.add_checksum(root=None, checksum_type="sha256", checksum_value="376be7d4855ad6281cb139430606a782fd6189dcb01d7b61448e915802cc350f")

View File

@ -13,27 +13,38 @@
%global with_python3 0
%endif
# compatibility with older releases
%{!?__python2: %global __python2 /usr/bin/python2}
%{!?python2_sitelib: %global python2_sitelib %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
%{!?python2_sitearch: %global python2_sitearch %(%{__python2} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%{!?py2_build: %global py2_build %{expand: CFLAGS="%{optflags}" %{__python2} setup.py %{?py_setup_args} build --executable="%{__python2} -s"}}
%{!?py2_install: %global py2_install %{expand: CFLAGS="%{optflags}" %{__python2} setup.py %{?py_setup_args} install -O1 --skip-build --root %{buildroot}}}
Name: python-productmd
Version: 1.2
Version: 1.3
Release: 1%{?dist}
Summary: Library providing parsers for metadata related to OS installation
Group: Development/Tools
License: LGPLv2+
URL: https://github.com/release-engineering/productmd
Source0: https://files.pythonhosted.org/packages/source/p/productmd/productmd-%{version}.tar.bz2
Source0: https://files.pythonhosted.org/packages/source/p/%{name}/%{name}-%{version}.tar.gz
Obsoletes: productmd <= %{version}-%{release}
Provides: productmd = %{version}-%{release}
Provides: python2-productmd = %{version}-%{release}
Requires: python-six
Obsoletes: productmd <= %{version}-%{release}
Provides: productmd = %{version}-%{release}
Provides: python2-productmd = %{version}-%{release}
Requires: python-six
BuildRequires: python2-devel
BuildRequires: python-setuptools
BuildRequires: python-six
BuildRequires: python2-devel python-setuptools
%if 0%{?with_python3}
BuildRequires: python3-devel python3-setuptools
BuildRequires: python3-devel
BuildRequires: python3-setuptools
BuildRequires: python3-six
%endif
BuildRequires: python-six
BuildArch: noarch
@ -53,44 +64,27 @@ and installation media.
%endif
%prep
%setup -qc -n productmd-%{version}
mv productmd-%{version} python2
cp -a python2 python3
cp python2/LICENSE .
cp python2/AUTHORS .
%setup -q
%build
pushd python2
CFLAGS="$RPM_OPT_FLAGS" %{__python2} setup.py build
popd
%py2_build
%if 0%{?with_python3}
pushd python3
CFLAGS="$RPM_OPT_FLAGS" %{__python3} setup.py build
popd
%py3_build
%endif
%install
pushd python2
%{__python2} setup.py install --skip-build --root $RPM_BUILD_ROOT
popd
%py2_install
%if 0%{?with_python3}
pushd python3
%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT
popd
%py3_install
%endif
%check
pushd python2
%{__python2} ./setup.py test
popd
%if 0%{?with_python3}
pushd python3
%{__python3} ./setup.py test
popd
%endif
%files
@ -109,6 +103,12 @@ popd
%endif
%changelog
* Wed Nov 23 2016 Lubomír Sedlář <lsedlar@redhat.com> 1.3-1
- new package built with tito
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 1.2-2
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
* Thu Jun 02 2016 Lubomír Sedlář <lsedlar@redhat.com> - 1.2-1
- New upstream release
- Update source url to point to PyPI

View File

@ -1 +1 @@
0e3cbd5be3161d461025043ad9f5ff7b productmd-1.2.tar.bz2
ffc2112169536f867f3253cc5b5ff3ff python-productmd-1.3.tar.gz