Update python-productmd to 1.3-1
This commit is contained in:
parent
7420ff4034
commit
d03aae7fc8
1
.gitignore
vendored
1
.gitignore
vendored
@ -2,3 +2,4 @@
|
|||||||
/productmd-1.0.tar.gz
|
/productmd-1.0.tar.gz
|
||||||
/productmd-1.1.tar.gz
|
/productmd-1.1.tar.gz
|
||||||
/productmd-1.2.tar.bz2
|
/productmd-1.2.tar.bz2
|
||||||
|
/python-productmd-1.3.tar.gz
|
||||||
|
@ -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
|
|
||||||
|
|
@ -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")
|
|
@ -13,27 +13,38 @@
|
|||||||
%global with_python3 0
|
%global with_python3 0
|
||||||
%endif
|
%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
|
Name: python-productmd
|
||||||
Version: 1.2
|
Version: 1.3
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
Summary: Library providing parsers for metadata related to OS installation
|
Summary: Library providing parsers for metadata related to OS installation
|
||||||
|
|
||||||
Group: Development/Tools
|
Group: Development/Tools
|
||||||
License: LGPLv2+
|
License: LGPLv2+
|
||||||
URL: https://github.com/release-engineering/productmd
|
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}
|
Obsoletes: productmd <= %{version}-%{release}
|
||||||
Provides: productmd = %{version}-%{release}
|
Provides: productmd = %{version}-%{release}
|
||||||
Provides: python2-productmd = %{version}-%{release}
|
Provides: python2-productmd = %{version}-%{release}
|
||||||
Requires: python-six
|
|
||||||
|
Requires: python-six
|
||||||
|
|
||||||
|
BuildRequires: python2-devel
|
||||||
|
BuildRequires: python-setuptools
|
||||||
|
BuildRequires: python-six
|
||||||
|
|
||||||
BuildRequires: python2-devel python-setuptools
|
|
||||||
%if 0%{?with_python3}
|
%if 0%{?with_python3}
|
||||||
BuildRequires: python3-devel python3-setuptools
|
BuildRequires: python3-devel
|
||||||
|
BuildRequires: python3-setuptools
|
||||||
BuildRequires: python3-six
|
BuildRequires: python3-six
|
||||||
%endif
|
%endif
|
||||||
BuildRequires: python-six
|
|
||||||
|
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
|
||||||
@ -53,44 +64,27 @@ and installation media.
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -qc -n productmd-%{version}
|
%setup -q
|
||||||
mv productmd-%{version} python2
|
|
||||||
|
|
||||||
cp -a python2 python3
|
|
||||||
cp python2/LICENSE .
|
|
||||||
cp python2/AUTHORS .
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
pushd python2
|
%py2_build
|
||||||
CFLAGS="$RPM_OPT_FLAGS" %{__python2} setup.py build
|
|
||||||
popd
|
|
||||||
|
|
||||||
%if 0%{?with_python3}
|
%if 0%{?with_python3}
|
||||||
pushd python3
|
%py3_build
|
||||||
CFLAGS="$RPM_OPT_FLAGS" %{__python3} setup.py build
|
|
||||||
popd
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%install
|
%install
|
||||||
pushd python2
|
%py2_install
|
||||||
%{__python2} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
|
||||||
popd
|
|
||||||
|
|
||||||
%if 0%{?with_python3}
|
%if 0%{?with_python3}
|
||||||
pushd python3
|
%py3_install
|
||||||
%{__python3} setup.py install --skip-build --root $RPM_BUILD_ROOT
|
|
||||||
popd
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%check
|
%check
|
||||||
pushd python2
|
|
||||||
%{__python2} ./setup.py test
|
%{__python2} ./setup.py test
|
||||||
popd
|
|
||||||
|
|
||||||
%if 0%{?with_python3}
|
%if 0%{?with_python3}
|
||||||
pushd python3
|
|
||||||
%{__python3} ./setup.py test
|
%{__python3} ./setup.py test
|
||||||
popd
|
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%files
|
%files
|
||||||
@ -109,6 +103,12 @@ popd
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%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
|
* Thu Jun 02 2016 Lubomír Sedlář <lsedlar@redhat.com> - 1.2-1
|
||||||
- New upstream release
|
- New upstream release
|
||||||
- Update source url to point to PyPI
|
- Update source url to point to PyPI
|
||||||
|
Loading…
Reference in New Issue
Block a user