From 36fc89279615c099402dc402af8b6e97346d786d Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 5 Nov 2019 13:16:13 -0500 Subject: [PATCH] import python3-azure-sdk-4.0.0-9.el8 --- .gitignore | 8 + .python3-azure-sdk.metadata | 8 + .../certifi-2018.10.15-use-system-cert.patch | 15 + SOURCES/python-adal-1.2.0-tests.patch | 23 ++ SOURCES/python-azure-sdk-4.0.0-nspkgs.patch | 12 + SOURCES/python-msrest-0.6.1-isodate.patch | 41 +++ SOURCES/python-msrest-0.6.1-setup.patch | 44 +++ SOURCES/python-msrest-0.6.1-tests.patch | 191 ++++++++++ SPECS/python3-azure-sdk.spec | 325 ++++++++++++++++++ 9 files changed, 667 insertions(+) create mode 100644 .gitignore create mode 100644 .python3-azure-sdk.metadata create mode 100644 SOURCES/certifi-2018.10.15-use-system-cert.patch create mode 100644 SOURCES/python-adal-1.2.0-tests.patch create mode 100644 SOURCES/python-azure-sdk-4.0.0-nspkgs.patch create mode 100644 SOURCES/python-msrest-0.6.1-isodate.patch create mode 100644 SOURCES/python-msrest-0.6.1-setup.patch create mode 100644 SOURCES/python-msrest-0.6.1-tests.patch create mode 100644 SPECS/python3-azure-sdk.spec diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a771ab --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +SOURCES/SecretStorage-2.3.1.tar.gz +SOURCES/adal-1.2.0.tar.gz +SOURCES/azure-sdk-4.0.0.tar.gz +SOURCES/certifi-2018.10.15.tar.gz +SOURCES/isodate-0.5.4.tar.gz +SOURCES/keyring-13.2.1.tar.gz +SOURCES/msrest-0.6.2.tar.gz +SOURCES/msrestazure-0.5.1.tar.gz diff --git a/.python3-azure-sdk.metadata b/.python3-azure-sdk.metadata new file mode 100644 index 0000000..55f6558 --- /dev/null +++ b/.python3-azure-sdk.metadata @@ -0,0 +1,8 @@ +e255c82842e7c50cd9ff9942bafd647e59eb5459 SOURCES/SecretStorage-2.3.1.tar.gz +1601d78ad0edf639c0716e8dc80bd8e9e67932ac SOURCES/adal-1.2.0.tar.gz +1d01c4919c2e55cd7394c09a5233421aa290a913 SOURCES/azure-sdk-4.0.0.tar.gz +73eb43fcb367b3d2bd346d99df89e911da7fee05 SOURCES/certifi-2018.10.15.tar.gz +40ccf07a8e46284a79cfc4d41e151f71ae63f535 SOURCES/isodate-0.5.4.tar.gz +0e35ea34961f9762de35bf62fcdfef65d44cfbe1 SOURCES/keyring-13.2.1.tar.gz +d5fb55c3c6f7b61d166c530d7694bdb51503e644 SOURCES/msrest-0.6.2.tar.gz +ab7f31d5c3c7264539660bab88778795de7b90ea SOURCES/msrestazure-0.5.1.tar.gz diff --git a/SOURCES/certifi-2018.10.15-use-system-cert.patch b/SOURCES/certifi-2018.10.15-use-system-cert.patch new file mode 100644 index 0000000..68328ff --- /dev/null +++ b/SOURCES/certifi-2018.10.15-use-system-cert.patch @@ -0,0 +1,15 @@ +diff -r -u certifi-2018.10.15.orig/certifi/core.py certifi-2018.10.15/certifi/core.py +--- certifi-2018.10.15.orig/certifi/core.py 2018-01-18 15:27:24.000000000 -0500 ++++ certifi-2018.10.15/certifi/core.py 2018-12-13 11:08:30.834151536 -0500 +@@ -19,9 +19,7 @@ + + + def where(): +- f = os.path.dirname(__file__) +- +- return os.path.join(f, 'cacert.pem') ++ return '/etc/pki/tls/certs/ca-bundle.crt' + + + def old_where(): +Only in certifi-2018.10.15/certifi: core.py~ diff --git a/SOURCES/python-adal-1.2.0-tests.patch b/SOURCES/python-adal-1.2.0-tests.patch new file mode 100644 index 0000000..29e86ba --- /dev/null +++ b/SOURCES/python-adal-1.2.0-tests.patch @@ -0,0 +1,23 @@ +diff -up ./tests/test_mex.py.orig ./tests/test_mex.py +--- ./tests/test_mex.py.orig 2018-10-19 00:29:42.000000000 +0200 ++++ ./tests/test_mex.py 2018-11-02 01:34:24.851553069 +0100 +@@ -25,6 +25,7 @@ + # + #------------------------------------------------------------------------------ + import os ++from distutils.version import LooseVersion + import unittest + import httpretty + from tests import util +@@ -52,7 +53,10 @@ class Test_Mex(unittest.TestCase): + mex.discover() + self.fail('No exception was thrown caused by failed request') + except Exception as exp: +- self.assertEqual(exp.args[0], 'Mex Get request returned http error: 500 and server response: HTTPretty :)') ++ if LooseVersion(httpretty.__version__) >= LooseVersion("0.9.0"): ++ self.assertEqual(exp.args[0], 'Mex Get request returned http error: 500 and server response: {"message": "HTTPretty :)"}') ++ else: ++ self.assertEqual(exp.args[0], 'Mex Get request returned http error: 500 and server response: HTTPretty :)') + + @httpretty.activate + def _happyPathTest(self, file_name, expectedUrl): diff --git a/SOURCES/python-azure-sdk-4.0.0-nspkgs.patch b/SOURCES/python-azure-sdk-4.0.0-nspkgs.patch new file mode 100644 index 0000000..a27a78d --- /dev/null +++ b/SOURCES/python-azure-sdk-4.0.0-nspkgs.patch @@ -0,0 +1,12 @@ +diff -up ./setup.py.orig ./setup.py +--- ./setup.py.orig 2018-08-02 18:37:34.000000000 +0200 ++++ ./setup.py 2018-08-06 11:25:14.496926373 +0200 +@@ -27,7 +27,7 @@ nspkg_packages.sort(key = lambda x: len( + meta_package = ['azure-mgmt', 'azure'] + + # So content packages are: +-content_package = [p for p in packages if p not in meta_package+nspkg_packages] ++content_package = [p for p in packages if p not in meta_package+['azure-sdk-tools']] + # Move azure-common at the beginning + content_package.remove("azure-common") + content_package.insert(0, "azure-common") diff --git a/SOURCES/python-msrest-0.6.1-isodate.patch b/SOURCES/python-msrest-0.6.1-isodate.patch new file mode 100644 index 0000000..035ce1f --- /dev/null +++ b/SOURCES/python-msrest-0.6.1-isodate.patch @@ -0,0 +1,41 @@ +diff -up ./msrest/serialization.py.orig ./msrest/serialization.py +--- ./msrest/serialization.py.orig 2018-10-15 18:43:34.000000000 +0000 ++++ ./msrest/serialization.py 2018-11-02 00:23:20.092139671 +0000 +@@ -27,6 +27,7 @@ + from base64 import b64decode, b64encode + import calendar + import datetime ++from distutils.version import LooseVersion, StrictVersion + import decimal + from enum import Enum + import json +@@ -37,6 +38,7 @@ try: + from urllib import quote # type: ignore + except ImportError: + from urllib.parse import quote # type: ignore ++import pkg_resources + import xml.etree.ElementTree as ET + + import isodate +@@ -57,6 +59,7 @@ except NameError: + basestring = str # type: ignore + + _LOGGER = logging.getLogger(__name__) ++_ISODATE_VERSION = pkg_resources.get_distribution("isodate").version + + try: + _long_type = long # type: ignore +@@ -1712,8 +1715,11 @@ class Deserializer(object): + attr = attr.text + if re.search(r"[^\W\d_]", attr, re.I + re.U): + raise DeserializationError("Date must have only digits and -. Received: %s" % attr) +- # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. +- return isodate.parse_date(attr, defaultmonth=None, defaultday=None) ++ if LooseVersion(_ISODATE_VERSION) >= LooseVersion("0.6.0"): ++ # This must NOT use defaultmonth/defaultday. Using None ensure this raises an exception. ++ return isodate.parse_date(attr, defaultmonth=None, defaultday=None) ++ else: ++ return isodate.parse_date(attr) + + @staticmethod + def deserialize_rfc(attr): diff --git a/SOURCES/python-msrest-0.6.1-setup.patch b/SOURCES/python-msrest-0.6.1-setup.patch new file mode 100644 index 0000000..506b6e0 --- /dev/null +++ b/SOURCES/python-msrest-0.6.1-setup.patch @@ -0,0 +1,44 @@ +diff -up ./setup.py.orig ./setup.py +--- ./setup.py.orig 2018-10-15 20:43:34.000000000 +0200 ++++ ./setup.py 2018-11-01 15:56:18.995147704 +0100 +@@ -25,6 +25,20 @@ + # -------------------------------------------------------------------------- + + from setuptools import setup, find_packages ++import sys ++ ++install_requires = [ ++ "requests>=2.16,<2.17", ++ "requests_oauthlib>=0.5.0", ++ "isodate>=0.6.0", ++ "certifi>=2017.4.17" ++] ++if sys.version_info < (3, 4): ++ install_requires.append("enum34>=1.0.4") ++if sys.version_info < (3, 5): ++ install_requires.append("typing") ++else: ++ install_requires += ["aiohttp>=3.0", "aiodns"] + + setup( + name='msrest', +@@ -47,18 +61,5 @@ setup( + 'Programming Language :: Python :: 3.7', + 'License :: OSI Approved :: MIT License', + 'Topic :: Software Development'], +- install_requires=[ +- "requests~=2.16", +- "requests_oauthlib>=0.5.0", +- "isodate>=0.6.0", +- "certifi>=2017.4.17", +- ], +- extras_require={ +- ":python_version<'3.4'": ['enum34>=1.0.4'], +- ":python_version<'3.5'": ['typing'], +- "async:python_version>='3.5'": [ +- 'aiohttp>=3.0', +- 'aiodns' +- ], +- } ++ install_requires=install_requires + ) diff --git a/SOURCES/python-msrest-0.6.1-tests.patch b/SOURCES/python-msrest-0.6.1-tests.patch new file mode 100644 index 0000000..949f8a0 --- /dev/null +++ b/SOURCES/python-msrest-0.6.1-tests.patch @@ -0,0 +1,191 @@ +diff -up ./tests/asynctests/test_pipeline.py.orig ./tests/asynctests/test_pipeline.py +--- ./tests/asynctests/test_pipeline.py.orig 2018-10-15 20:43:34.000000000 +0200 ++++ ./tests/asynctests/test_pipeline.py 2018-11-02 11:50:16.085392737 +0100 +@@ -75,54 +75,54 @@ async def test_sans_io_exception(): + await pipeline.run(req) + + +-@pytest.mark.asyncio +-async def test_basic_aiohttp(): ++# @pytest.mark.asyncio ++# async def test_basic_aiohttp(): + +- request = ClientRequest("GET", "http://bing.com") +- policies = [ +- UserAgentPolicy("myusergant") +- ] +- async with AsyncPipeline(policies) as pipeline: +- response = await pipeline.run(request) +- +- assert pipeline._sender.driver._session.closed +- assert response.http_response.status_code == 200 +- +-@pytest.mark.asyncio +-async def test_basic_async_requests(): +- +- request = ClientRequest("GET", "http://bing.com") +- policies = [ +- UserAgentPolicy("myusergant") +- ] +- async with AsyncPipeline(policies, AsyncPipelineRequestsHTTPSender()) as pipeline: +- response = await pipeline.run(request) +- +- assert response.http_response.status_code == 200 +- +-@pytest.mark.asyncio +-async def test_conf_async_requests(): +- +- conf = Configuration("http://bing.com/") +- request = ClientRequest("GET", "http://bing.com/") +- policies = [ +- UserAgentPolicy("myusergant") +- ] +- async with AsyncPipeline(policies, AsyncPipelineRequestsHTTPSender(AsyncRequestsHTTPSender(conf))) as pipeline: +- response = await pipeline.run(request) +- +- assert response.http_response.status_code == 200 +- +-def test_conf_async_trio_requests(): +- +- async def do(): +- conf = Configuration("http://bing.com/") +- request = ClientRequest("GET", "http://bing.com/") +- policies = [ +- UserAgentPolicy("myusergant") +- ] +- async with AsyncPipeline(policies, AsyncPipelineRequestsHTTPSender(AsyncTrioRequestsHTTPSender(conf))) as pipeline: +- return await pipeline.run(request) ++# request = ClientRequest("GET", "http://bing.com") ++# policies = [ ++# UserAgentPolicy("myusergant") ++# ] ++# async with AsyncPipeline(policies) as pipeline: ++# response = await pipeline.run(request) ++ ++# assert pipeline._sender.driver._session.closed ++# assert response.http_response.status_code == 200 ++ ++# @pytest.mark.asyncio ++# async def test_basic_async_requests(): ++ ++# request = ClientRequest("GET", "http://bing.com") ++# policies = [ ++# UserAgentPolicy("myusergant") ++# ] ++# async with AsyncPipeline(policies, AsyncPipelineRequestsHTTPSender()) as pipeline: ++# response = await pipeline.run(request) ++ ++# assert response.http_response.status_code == 200 ++ ++# @pytest.mark.asyncio ++# async def test_conf_async_requests(): ++ ++# conf = Configuration("http://bing.com/") ++# request = ClientRequest("GET", "http://bing.com/") ++# policies = [ ++# UserAgentPolicy("myusergant") ++# ] ++# async with AsyncPipeline(policies, AsyncPipelineRequestsHTTPSender(AsyncRequestsHTTPSender(conf))) as pipeline: ++# response = await pipeline.run(request) ++ ++# assert response.http_response.status_code == 200 ++ ++# def test_conf_async_trio_requests(): ++ ++# async def do(): ++# conf = Configuration("http://bing.com/") ++# request = ClientRequest("GET", "http://bing.com/") ++# policies = [ ++# UserAgentPolicy("myusergant") ++# ] ++# async with AsyncPipeline(policies, AsyncPipelineRequestsHTTPSender(AsyncTrioRequestsHTTPSender(conf))) as pipeline: ++# return await pipeline.run(request) + +- response = trio.run(do) +- assert response.http_response.status_code == 200 +\ No newline at end of file ++# response = trio.run(do) ++# assert response.http_response.status_code == 200 +diff -up ./tests/asynctests/test_universal_http.py.orig ./tests/asynctests/test_universal_http.py +--- ./tests/asynctests/test_universal_http.py.orig 2018-10-15 20:43:34.000000000 +0200 ++++ ./tests/asynctests/test_universal_http.py 2018-11-02 11:48:24.360298265 +0100 +@@ -43,46 +43,46 @@ import trio + import pytest + + +-@pytest.mark.asyncio +-async def test_basic_aiohttp(): ++# @pytest.mark.asyncio ++# async def test_basic_aiohttp(): + +- request = ClientRequest("GET", "http://bing.com") +- async with AioHTTPSender() as sender: +- response = await sender.send(request) +- assert response.body() is not None ++# request = ClientRequest("GET", "http://bing.com") ++# async with AioHTTPSender() as sender: ++# response = await sender.send(request) ++# assert response.body() is not None + +- assert sender._session.closed +- assert response.status_code == 200 ++# assert sender._session.closed ++# assert response.status_code == 200 + +-@pytest.mark.asyncio +-async def test_basic_async_requests(): ++# @pytest.mark.asyncio ++# async def test_basic_async_requests(): + +- request = ClientRequest("GET", "http://bing.com") +- async with AsyncBasicRequestsHTTPSender() as sender: +- response = await sender.send(request) +- assert response.body() is not None ++# request = ClientRequest("GET", "http://bing.com") ++# async with AsyncBasicRequestsHTTPSender() as sender: ++# response = await sender.send(request) ++# assert response.body() is not None + +- assert response.status_code == 200 ++# assert response.status_code == 200 + +-@pytest.mark.asyncio +-async def test_conf_async_requests(): ++# @pytest.mark.asyncio ++# async def test_conf_async_requests(): + +- conf = Configuration("http://bing.com/") +- request = ClientRequest("GET", "http://bing.com/") +- async with AsyncRequestsHTTPSender(conf) as sender: +- response = await sender.send(request) +- assert response.body() is not None ++# conf = Configuration("http://bing.com/") ++# request = ClientRequest("GET", "http://bing.com/") ++# async with AsyncRequestsHTTPSender(conf) as sender: ++# response = await sender.send(request) ++# assert response.body() is not None + +- assert response.status_code == 200 ++# assert response.status_code == 200 + +-def test_conf_async_trio_requests(): ++# def test_conf_async_trio_requests(): + +- async def do(): +- conf = Configuration("http://bing.com/") +- request = ClientRequest("GET", "http://bing.com/") +- async with AsyncTrioRequestsHTTPSender(conf) as sender: +- return await sender.send(request) +- assert response.body() is not None ++# async def do(): ++# conf = Configuration("http://bing.com/") ++# request = ClientRequest("GET", "http://bing.com/") ++# async with AsyncTrioRequestsHTTPSender(conf) as sender: ++# return await sender.send(request) ++# assert response.body() is not None + +- response = trio.run(do) +- assert response.status_code == 200 +\ No newline at end of file ++# response = trio.run(do) ++# assert response.status_code == 200 diff --git a/SPECS/python3-azure-sdk.spec b/SPECS/python3-azure-sdk.spec new file mode 100644 index 0000000..624ef79 --- /dev/null +++ b/SPECS/python3-azure-sdk.spec @@ -0,0 +1,325 @@ +%global srcname azure-sdk +%global common_description This project provides a set of Python packages that make it easy to access\ +Management (Virtual Machines, ...) or Runtime (ServiceBus using HTTP, Batch,\ +Monitor) components of Microsoft Azure Complete feature list of this repo and\ +where to find Python packages not in this repo can be found on our Azure SDK for\ +Python documentation. + +# EL is missing recommonmark library to build documentation +%global _with_doc 0%{?fedora} +%global pydoc_prefix %{?rhel:python}%{?fedora:python%{python3_pkgversion}} +%global sphinxbuild sphinx-build%{?fedora:-%{python3_version}} + +%global azure_storage_min_version 1.0.0 +%global msrest_min_version 0.4.26 +%global msrestazure_min_version 0.5.0 + +# bundles +%global bundled_lib_dir bundled +# python3-certifi bundle +%global certifi certifi +%global certifi_version 2018.10.15 +%global certifi_dir %{bundled_lib_dir}/azure/%{certifi} +# python3-isodate bundle +%global isodate isodate +%global isodate_version 0.5.4 +%global isodate_dir %{bundled_lib_dir}/azure/%{isodate} +# python3-msrest bundle +%global msrest msrest +%global msrest_version 0.6.2 +%global msrest_dir %{bundled_lib_dir}/azure/%{msrest} +# python3-adal bundle +%global adal adal +%global adal_version 1.2.0 +%global adal_dir %{bundled_lib_dir}/azure/%{adal} +# python3-SecretStorage bundle +%global secretstorage SecretStorage +%global secretstorage_version 2.3.1 +%global secretstorage_dir %{bundled_lib_dir}/azure/%{secretstorage} +# python3-keyring bundle +%global keyring keyring +%global keyring_version 13.2.1 +%global keyring_dir %{bundled_lib_dir}/azure/%{keyring} +# python3-msrestazure bundle +%global msrestazure msrestazure +%global msrestazure_version 0.5.1 +%global msrestazure_dir %{bundled_lib_dir}/azure/%{msrestazure} + +Name: python3-%{srcname} +Version: 4.0.0 +Release: 9%{?dist} +Summary: Microsoft Azure SDK for Python + +# All packages are licensed under the MIT license, except: +# - azure-servicebus +# - azure-servicemanagement-legacy +License: MIT and ASL 2.0 and MPLv2.0 and BSD and Python +URL: https://github.com/Azure/azure-sdk-for-python +Source0: %{url}/archive/azure_%{version}/%{srcname}-%{version}.tar.gz +Source1: %{certifi}-%{certifi_version}.tar.gz +Source2: %{isodate}-%{isodate_version}.tar.gz +Source3: %{msrest}-%{msrest_version}.tar.gz +Source4: %{adal}-%{adal_version}.tar.gz +Source5: %{secretstorage}-%{secretstorage_version}.tar.gz +Source6: %{keyring}-%{keyring_version}.tar.gz +Source7: %{msrestazure}-%{msrestazure_version}.tar.gz +# Install namespace package modules (disabled by default, may be required by +# modules depending on Azure SDK for development) +Patch0: python-azure-sdk-4.0.0-nspkgs.patch +# bundles +Patch1000: certifi-2018.10.15-use-system-cert.patch +Patch1001: python-msrest-0.6.1-setup.patch +Patch1002: python-msrest-0.6.1-isodate.patch +Patch1003: python-msrest-0.6.1-tests.patch +Patch1004: python-adal-1.2.0-tests.patch + +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-setuptools +# bundles +# python3-certifi bundle +BuildRequires: ca-certificates +# python3-keyring bundle +BuildRequires: python3-setuptools_scm +%if 0%{?_with_doc} +BuildRequires: %{pydoc_prefix}-recommonmark +BuildRequires: %{pydoc_prefix}-sphinx +BuildRequires: %{pydoc_prefix}-sphinx_rtd_theme +%endif +Requires: python%{python3_pkgversion}-pyOpenSSL +Requires: python%{python3_pkgversion}-requests +%{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}} +# bundles +# python3-certifi bundle +Provides: bundled(python3-%{certifi}) = %{certifi_version} +# python3-isodate bundle +Provides: bundled(python3-%{isodate}) = %{isodate_version} +# python3-msrest bundle +Provides: bundled(python3-%{msrest}) = %{msrest_version} +# python3-adal bundle +Provides: bundled(python3-%{adal}) = %{adal_version} +# python3-SecretStorage bundle +Provides: bundled(python3-%{secretstorage}) = %{secretstorage_version} +# python3-keyring bundle +Provides: bundled(python3-%{keyring}) = %{keyring_version} +# python3-msrestazure bundle +Provides: bundled(python3-%{msrestazure}) = %{msrestazure_version} +# python3-certifi bundle +Requires: ca-certificates +# python3-msrest bundle +Requires: python3-requests-oauthlib +# python3-adal bundle +Requires: python3-cryptography +Requires: python3-dateutil +Requires: python3-jwt +BuildArch: noarch + +%description +%{common_description} + + +%if 0%{?_with_doc} +%package doc +Summary: Documentation for %{name} + +%description doc +This package provides documentation for %{name}. +%endif + + +%prep +%setup -q -n %{srcname}-for-python-azure_%{version}%{?prerelease} +%patch0 + +# bundles +mkdir -p %{bundled_lib_dir}/azure + +# python3-certifi bundle +tar -xzf %SOURCE1 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/%{certifi}-%{certifi_version} %{certifi_dir} +# Remove bundled egg-info +rm -rf %{certifi_dir}/*.egg-info +rm -rf %{certifi_dir}/certifi/*.pem +cp %{certifi_dir}/README.rst %{certifi}_README.rst +cp %{certifi_dir}/LICENSE %{certifi}_LICENSE +pushd %{certifi_dir} +%patch1000 -p1 +popd + +# python3-isodate bundle +tar -xzf %SOURCE2 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/%{isodate}-%{isodate_version} %{isodate_dir} +cp %{isodate_dir}/README.rst %{isodate}_README.rst + +# python3-msrest +tar -xzf %SOURCE3 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/%{msrest}-for-python-%{msrest_version} %{msrest_dir} +cp %{msrest_dir}/README.rst %{msrest}_README.rst +cp %{msrest_dir}/LICENSE.md %{msrest}_LICENSE.md +pushd %{msrest_dir} +%patch1001 -p1 +%patch1002 -p1 +%patch1003 -p1 +popd + +# python3-adal +tar -xzf %SOURCE4 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/azure-activedirectory-library-for-python-%{adal_version} %{adal_dir} +cp %{adal_dir}/README.md %{adal}_README.md +cp %{adal_dir}/LICENSE %{adal}_LICENSE +pushd %{adal_dir} +%patch1004 -p1 +popd + +# python3-SecretStorage bundle +tar -xzf %SOURCE5 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/%{secretstorage}-%{secretstorage_version} %{secretstorage_dir} +cp %{secretstorage_dir}/README.rst %{secretstorage}_README.rst +cp %{secretstorage_dir}/LICENSE %{secretstorage}_LICENSE + +# python3-keyring bundle +tar -xzf %SOURCE6 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/%{keyring}-%{keyring_version} %{keyring_dir} +cp %{keyring_dir}/README.rst %{keyring}_README.rst +cp %{keyring_dir}/LICENSE %{keyring}_LICENSE + +# python3-msrestazure bundle +tar -xzf %SOURCE7 -C %{bundled_lib_dir} +mv %{bundled_lib_dir}/%{msrestazure}-for-python-%{msrestazure_version} %{msrestazure_dir} +cp %{msrestazure_dir}/README.rst %{msrestazure}_README.rst +cp %{msrestazure_dir}/LICENSE.md %{msrestazure}_LICENSE.md + +# append bundled-directory to search path +sed -i "/^import keyring/iimport sys\nsys.path.insert(0, '%{_libdir}/fence-agents/bundled')" azure-batch/azure/batch/batch_auth.py + +%build +%py3_build + +%if 0%{?_with_doc} +%make_build -C doc/ html SPHINXBUILD=%{sphinxbuild} +rm doc/_build/html/.buildinfo +%endif + +# bundles +# python3-certifi bundle +pushd %{certifi_dir} +%{__python3} setup.py build +popd + +# python3-isodate bundle +pushd %{isodate_dir} +%{__python3} setup.py build +popd + +# python3-msrest bundle +pushd %{msrest_dir} +%{__python3} setup.py build +popd + +# python3-adal bundle +pushd %{adal_dir} +%{__python3} setup.py build +popd + +# python3-SecretStorage bundle +pushd %{secretstorage_dir} +%{__python3} setup.py build +popd + +# python3-keyring bundle +pushd %{keyring_dir} +%{__python3} setup.py build +popd + +# python3-msrestazure bundle +pushd %{msrestazure_dir} +%{__python3} setup.py build +popd + + +%install +%py3_install + +# bundles +# python3-certifi bundle +pushd %{certifi_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + +# python3-isodate bundle +pushd %{isodate_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + +# python3-msrest bundle +pushd %{msrest_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + +# python3-adal bundle +pushd %{adal_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + +# python3-SecretStorage bundle +pushd %{secretstorage_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + +# python3-keyring bundle +pushd %{keyring_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + +# python3-msrestazure bundle +pushd %{msrestazure_dir} +%{__python3} setup.py install -O1 --skip-build --root %{buildroot} --install-lib /usr/lib/fence-agents/%{bundled_lib_dir}/azure +popd + + +%files +%doc CONTRIBUTING.md README.rst +%license LICENSE.txt +# bundled libraries +%doc %{certifi}_README.rst %{isodate}_README.rst %{msrest}_README.rst %{adal}_README.md %{secretstorage}_README.rst %{keyring}_README.rst %{msrestazure}_README.rst +%license %{certifi}_LICENSE %{msrest}_LICENSE.md %{adal}_LICENSE %{secretstorage}_LICENSE %{keyring}_LICENSE %{msrestazure}_LICENSE.md +%{python3_sitelib}/azure/ +%{python3_sitelib}/azure_*.egg-info/ +# bundled libraries +%dir /usr/lib/fence-agents +%dir /usr/lib/fence-agents/%{bundled_lib_dir} +/usr/lib/fence-agents/%{bundled_lib_dir}/azure +%exclude /usr/bin/keyring + + +%if 0%{?_with_doc} +%files doc +%doc doc/_build/html/ +%license LICENSE.txt +%endif + + +%changelog +* Tue May 14 2019 Oyvind Albrigtsen - 4.0.0-9 +- Update to 4.0.0 + azure-mgmt-compute 5.0.0 (for skip_shutdown feature) + Resolves: rhbz#1708129 +- Add CI gating tests + Resolves: rhbz#1682879 + +* Wed Jan 30 2019 Oyvind Albrigtsen - 4.0.0-8 +- Bundled libraries + Resolves: rhbz#1630844 + +* Fri Jan 25 2019 Oyvind Albrigtsen - 4.0.0-4 +- Initial import + Resolves: rhbz#1630844 + +* Thu Nov 22 2018 Mohamed El Morabity - 4.0.0-3 +- Build documentation with Python 3 on Fedora +- Fix Python 3-only file deployment +- Don't glob everything under the Python sitelib directory + +* Mon Aug 06 2018 Mohamed El Morabity - 4.0.0-2 +- Delete all Python 3-only files from the python2 subpackage + +* Mon Aug 06 2018 Mohamed El Morabity - 4.0.0-1 +- Update to 4.0.0