diff --git a/.gitignore b/.gitignore index 43d6f46..e07baab 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ /atomic-reactor-3deb7378d447091a886c17491a881a56a316f661.tar.gz /atomic-reactor-19330c92eff3f7086a52500207881ab5e4234b2f.tar.gz /atomic-reactor-e6fb7422e37dae88d436218c55e89faeb33fd41b.tar.gz +/atomic-reactor-71ff262252fa4d7937ccf47523f8ffdc55af6841.tar.gz diff --git a/atomic-reactor-1.6.25.1-docker-py2.patch b/atomic-reactor-1.6.25.1-docker-py2.patch new file mode 100644 index 0000000..60a92cc --- /dev/null +++ b/atomic-reactor-1.6.25.1-docker-py2.patch @@ -0,0 +1,331 @@ +commit 2014a746753e7f4133e1d13516c4cbadbdd424e8 +Author: Tim Waugh +Date: Fri Jul 14 10:17:43 2017 +0100 + + Add minimal support for docker-py-2.x module + + Signed-off-by: Tim Waugh + +diff --git a/atomic_reactor/core.py b/atomic_reactor/core.py +index ffea392..c3d413d 100644 +--- a/atomic_reactor/core.py ++++ b/atomic_reactor/core.py +@@ -31,7 +31,6 @@ import requests + + import docker + from docker.errors import APIError +-from docker.utils import create_host_config + + from atomic_reactor.constants import CONTAINER_SHARE_PATH, CONTAINER_SHARE_SOURCE_SUBDIR,\ + BUILD_JSON, DOCKER_SOCKET_PATH +@@ -163,11 +162,9 @@ class BuildContainerFactory(object): + + container_id = self.tasker.run( + ImageName.parse(build_image), +- create_kwargs={'volumes': [DOCKER_SOCKET_PATH, json_args_path], +- 'host_config': create_host_config( +- binds=volume_bindings, +- privileged=True) +- } ++ create_kwargs={'volumes': [DOCKER_SOCKET_PATH, json_args_path]}, ++ volume_bindings=volume_bindings, ++ privileged=True, + ) + + return container_id +@@ -206,11 +203,9 @@ class BuildContainerFactory(object): + + container_id = self.tasker.run( + ImageName.parse(build_image), +- create_kwargs={'volumes': [json_args_path], +- 'host_config': create_host_config( +- binds=volume_bindings, +- privileged=True) +- } ++ create_kwargs={'volumes': [json_args_path]}, ++ volume_bindings=volume_bindings, ++ privileged=True, + ) + + return container_id +@@ -226,7 +221,7 @@ class DockerTasker(LastLogger): + """ + super(DockerTasker, self).__init__(**kwargs) + +- client_kwargs = {} ++ client_kwargs = {'timeout': timeout} + if base_url: + client_kwargs['base_url'] = base_url + elif os.environ.get('DOCKER_CONNECTION'): +@@ -235,7 +230,12 @@ class DockerTasker(LastLogger): + if hasattr(docker, 'AutoVersionClient'): + client_kwargs['version'] = 'auto' + +- self.d = docker.Client(timeout=timeout, **client_kwargs) ++ try: ++ # docker-py 2.x ++ self.d = docker.APIClient(**client_kwargs) ++ except AttributeError: ++ # docker-py 1.x ++ self.d = docker.Client(**client_kwargs) + + def build_image_from_path(self, path, image, stream=False, use_cache=False, remove_im=True): + """ +@@ -301,7 +301,8 @@ class DockerTasker(LastLogger): + logger.info("build finished") + return response + +- def run(self, image, command=None, create_kwargs=None, start_kwargs=None): ++ def run(self, image, command=None, create_kwargs=None, start_kwargs=None, ++ volume_bindings=None, privileged=None): + """ + create container from provided image and start it + +@@ -317,6 +318,17 @@ class DockerTasker(LastLogger): + """ + logger.info("creating container from image '%s' and running it", image) + create_kwargs = create_kwargs or {} ++ ++ if 'host_config' not in create_kwargs: ++ conf = {} ++ if volume_bindings is not None: ++ conf['binds'] = volume_bindings ++ ++ if privileged is not None: ++ conf['privileged'] = privileged ++ ++ create_kwargs['host_config'] = self.d.create_host_config(**conf) ++ + start_kwargs = start_kwargs or {} + logger.debug("image = '%s', command = '%s', create_kwargs = '%s', start_kwargs = '%s'", + image, command, create_kwargs, start_kwargs) +diff --git a/tests/README b/tests/README +index f59150b..f9d4a29 100644 +--- a/tests/README ++++ b/tests/README +@@ -3,7 +3,7 @@ Requirements: see requirements.txt + How to run: + $ py.test -v + +-By default all docker.Client methods are mocked, so you don't need docker to run these tests. ++By default all docker.APIClient methods are mocked, so you don't need docker to run these tests. + If you want to run 'integration' tests, i.e. test with running docker instance, you need: + $ yum install docker docker-registry + $ systemctl start docker docker-registry +diff --git a/tests/docker_mock.py b/tests/docker_mock.py +index 367924d..0987bda 100644 +--- a/tests/docker_mock.py ++++ b/tests/docker_mock.py +@@ -270,7 +270,7 @@ def mock_docker(build_should_fail=False, + push_should_fail=False, + build_should_fail_generator=False): + """ +- mock all used docker.Client methods ++ mock all used docker.APIClient methods + + :param build_should_fail: True == build() log will contain error + :param inspect_should_fail: True == inspect_image() will raise docker.errors.NotFound +@@ -291,11 +291,14 @@ def mock_docker(build_should_fail=False, + else: + build_result = iter(mock_build_logs) + +- flexmock(docker.Client, build=lambda **kwargs: build_result) +- flexmock(docker.Client, commit=lambda cid, **kwargs: mock_containers[0]) +- flexmock(docker.Client, containers=lambda **kwargs: mock_containers) +- flexmock(docker.Client, create_container=lambda img, **kwargs: mock_containers[0]) +- flexmock(docker.Client, images=lambda **kwargs: [mock_image]) ++ if not hasattr(docker, 'APIClient'): ++ setattr(docker, 'APIClient', docker.Client) ++ ++ flexmock(docker.APIClient, build=lambda **kwargs: build_result) ++ flexmock(docker.APIClient, commit=lambda cid, **kwargs: mock_containers[0]) ++ flexmock(docker.APIClient, containers=lambda **kwargs: mock_containers) ++ flexmock(docker.APIClient, create_container=lambda img, **kwargs: mock_containers[0]) ++ flexmock(docker.APIClient, images=lambda **kwargs: [mock_image]) + + def mock_inspect_image(image_id): + if inspect_should_fail: +@@ -303,21 +306,21 @@ def mock_docker(build_should_fail=False, + else: + return mock_image + +- flexmock(docker.Client, inspect_image=mock_inspect_image) +- flexmock(docker.Client, inspect_container=lambda im_id: mock_inspect_container) +- flexmock(docker.Client, logs=lambda cid, **kwargs: iter([mock_logs]) if kwargs.get('stream') ++ flexmock(docker.APIClient, inspect_image=mock_inspect_image) ++ flexmock(docker.APIClient, inspect_container=lambda im_id: mock_inspect_container) ++ flexmock(docker.APIClient, logs=lambda cid, **kwargs: iter([mock_logs]) if kwargs.get('stream') + else mock_logs) +- flexmock(docker.Client, pull=lambda img, **kwargs: iter(mock_pull_logs)) +- flexmock(docker.Client, push=lambda iid, **kwargs: iter(push_result)) +- flexmock(docker.Client, remove_container=lambda cid, **kwargs: None) +- flexmock(docker.Client, remove_image=lambda iid, **kwargs: None) +- flexmock(docker.Client, start=lambda cid, **kwargs: None) +- flexmock(docker.Client, tag=lambda img, rep, **kwargs: True) +- flexmock(docker.Client, wait=lambda cid: 1 if wait_should_fail else 0) +- flexmock(docker.Client, version=lambda **kwargs: mock_version) +- flexmock(docker.Client, info=lambda **kwargs: mock_info) +- flexmock(docker.Client, import_image_from_data=lambda url: mock_import_image) +- flexmock(docker.Client, import_image_from_stream=lambda url: mock_import_image) ++ flexmock(docker.APIClient, pull=lambda img, **kwargs: iter(mock_pull_logs)) ++ flexmock(docker.APIClient, push=lambda iid, **kwargs: iter(push_result)) ++ flexmock(docker.APIClient, remove_container=lambda cid, **kwargs: None) ++ flexmock(docker.APIClient, remove_image=lambda iid, **kwargs: None) ++ flexmock(docker.APIClient, start=lambda cid, **kwargs: None) ++ flexmock(docker.APIClient, tag=lambda img, rep, **kwargs: True) ++ flexmock(docker.APIClient, wait=lambda cid: 1 if wait_should_fail else 0) ++ flexmock(docker.APIClient, version=lambda **kwargs: mock_version) ++ flexmock(docker.APIClient, info=lambda **kwargs: mock_info) ++ flexmock(docker.APIClient, import_image_from_data=lambda url: mock_import_image) ++ flexmock(docker.APIClient, import_image_from_stream=lambda url: mock_import_image) + + class GetImageResult(object): + data = b'' +@@ -334,7 +337,7 @@ def mock_docker(build_should_fail=False, + def __exit__(self, tp, val, tb): + self.fp.close() + +- flexmock(docker.Client, get_image=lambda img, **kwargs: GetImageResult()) ++ flexmock(docker.APIClient, get_image=lambda img, **kwargs: GetImageResult()) + flexmock(os.path, exists=lambda p: True if p == DOCKER_SOCKET_PATH else old_ope(p)) + + def remove_volume(volume_name): +@@ -346,24 +349,27 @@ def mock_docker(build_should_fail=False, + raise docker.errors.APIError("failed to remove volume %s" % volume_name, response) + return None + +- flexmock(docker.Client, remove_volume=lambda iid, **kwargs: remove_volume(iid)) ++ flexmock(docker.APIClient, remove_volume=lambda iid, **kwargs: remove_volume(iid)) + + for method, args in should_raise_error.items(): + response = flexmock(content="abc", status_code=123) + if args: +- flexmock(docker.Client).should_receive(method).with_args(*args).and_raise( +- docker.errors.APIError, "xyz", response) ++ (flexmock(docker.APIClient) ++ .should_receive(method) ++ .with_args(*args).and_raise(docker.errors.APIError, "xyz", ++ response)) + else: +- flexmock(docker.Client).should_receive(method).and_raise(docker.errors.APIError, "xyz", +- response) ++ (flexmock(docker.APIClient) ++ .should_receive(method) ++ .and_raise(docker.errors.APIError, "xyz", response)) + + if remember_images: + global mock_images + mock_images = [mock_image] + +- flexmock(docker.Client, inspect_image=_mock_inspect) +- flexmock(docker.Client, pull=_mock_pull) +- flexmock(docker.Client, remove_image=_mock_remove_image) +- flexmock(docker.Client, tag=_mock_tag) ++ flexmock(docker.APIClient, inspect_image=_mock_inspect) ++ flexmock(docker.APIClient, pull=_mock_pull) ++ flexmock(docker.APIClient, remove_image=_mock_remove_image) ++ flexmock(docker.APIClient, tag=_mock_tag) + +- flexmock(docker.Client, _retrieve_server_version=lambda: '1.20') ++ flexmock(docker.APIClient, _retrieve_server_version=lambda: '1.20') +diff --git a/tests/plugins/test_rpmqa.py b/tests/plugins/test_rpmqa.py +index ba5cbc5..fe7afe8 100644 +--- a/tests/plugins/test_rpmqa.py ++++ b/tests/plugins/test_rpmqa.py +@@ -69,7 +69,7 @@ def test_rpmqa_plugin(remove_container_error, ignore_autogenerated): + setattr(workflow.builder.source, 'dockerfile_path', "/non/existent") + setattr(workflow.builder.source, 'path', "/non/existent") + +- flexmock(docker.Client, logs=mock_logs) ++ flexmock(docker.APIClient, logs=mock_logs) + runner = PostBuildPluginsRunner( + tasker, + workflow, +@@ -95,7 +95,8 @@ def test_rpmqa_plugin_exception(docker_tasker): # noqa + setattr(workflow.builder.source, 'dockerfile_path', "/non/existent") + setattr(workflow.builder.source, 'path', "/non/existent") + +- flexmock(docker.Client, logs=mock_logs_raise) ++ mock_docker() ++ flexmock(docker.APIClient, logs=mock_logs_raise) + runner = PostBuildPluginsRunner(docker_tasker, workflow, + [{"name": PostBuildRPMqaPlugin.key, + "args": {'image_id': TEST_IMAGE}}]) +diff --git a/tests/plugins/test_tag_and_push.py b/tests/plugins/test_tag_and_push.py +index 2e5b773..9fce57c 100644 +--- a/tests/plugins/test_tag_and_push.py ++++ b/tests/plugins/test_tag_and_push.py +@@ -103,7 +103,7 @@ def test_tag_and_push_plugin( + + if MOCK: + mock_docker() +- flexmock(docker.Client, push=lambda iid, **kwargs: iter(logs), ++ flexmock(docker.APIClient, push=lambda iid, **kwargs: iter(logs), + login=lambda username, registry, dockercfg_path: {'Status': 'Login Succeeded'}) + + tasker = DockerTasker() +diff --git a/tests/test_tasker.py b/tests/test_tasker.py +index 8978d0c..db0423d 100644 +--- a/tests/test_tasker.py ++++ b/tests/test_tasker.py +@@ -327,12 +327,45 @@ def test_get_version(): + (60, 60), + ]) + def test_timeout(timeout, expected_timeout): +- (flexmock(docker.Client) ++ if not hasattr(docker, 'APIClient'): ++ setattr(docker, 'APIClient', docker.Client) ++ ++ expected_kwargs = { ++ 'timeout': expected_timeout, ++ } ++ if hasattr(docker, 'AutoVersionClient'): ++ expected_kwargs['version'] = 'auto' ++ ++ (flexmock(docker.APIClient) + .should_receive('__init__') +- .with_args(version=str, timeout=expected_timeout)) ++ .with_args(**expected_kwargs)) + + kwargs = {} + if timeout is not None: + kwargs['timeout'] = timeout + + DockerTasker(**kwargs) ++ ++ ++def test_docker2(): ++ class MockClient(object): ++ def __init__(self, **kwargs): ++ pass ++ ++ def version(self): ++ return {} ++ ++ for client in ['APIClient', 'Client']: ++ if not hasattr(docker, client): ++ setattr(docker, client, MockClient) ++ ++ (flexmock(docker) ++ .should_receive('APIClient') ++ .once() ++ .and_raise(AttributeError)) ++ ++ (flexmock(docker) ++ .should_receive('Client') ++ .once()) ++ ++ DockerTasker() +diff --git a/tests/test_util.py b/tests/test_util.py +index c2ec701..3b4c6c8 100644 +--- a/tests/test_util.py ++++ b/tests/test_util.py +@@ -85,7 +85,7 @@ def test_wait_for_command(): + if MOCK: + mock_docker() + +- d = docker.Client() ++ d = docker.APIClient() + logs_gen = d.pull(INPUT_IMAGE, stream=True) + assert wait_for_command(logs_gen) is not None + diff --git a/atomic-reactor.spec b/atomic-reactor.spec index cc25d06..71756dd 100644 --- a/atomic-reactor.spec +++ b/atomic-reactor.spec @@ -1,4 +1,4 @@ -%if 1%{?rhel} && 0%{?rhel} <= 6 +%if 0%{?rhel} && 0%{?rhel} <= 6 %{!?__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))")} @@ -25,14 +25,14 @@ %global owner projectatomic %global project atomic-reactor -%global commit e6fb7422e37dae88d436218c55e89faeb33fd41b +%global commit 71ff262252fa4d7937ccf47523f8ffdc55af6841 %global shortcommit %(c=%{commit}; echo ${c:0:7}) %global dock_obsolete_vr 1.3.7-2 Name: %{project} -Version: 1.6.23.2 -Release: 3%{?dist} +Version: 1.6.25.1 +Release: 1%{?dist} Summary: Improved builder for Docker images Group: Development/Tools @@ -40,6 +40,12 @@ License: BSD URL: https://github.com/%{owner}/%{project} Source0: https://github.com/%{owner}/%{project}/archive/%{commit}/%{project}-%{commit}.tar.gz +# This patch is already merged upstream, pulling it in so we don't have to +# wait for the upstream next release. +# +# https://github.com/projectatomic/atomic-reactor/pull/663 +Patch0: atomic-reactor-1.6.25.1-docker-py2.patch + BuildArch: noarch %if 0%{?with_check} @@ -52,7 +58,7 @@ BuildRequires: python-setuptools BuildRequires: pytest BuildRequires: python-pytest-capturelog BuildRequires: python-dockerfile-parse >= 0.0.5 -BuildRequires: python-docker-py +BuildRequires: python2-docker BuildRequires: python-flexmock >= 0.10.2 BuildRequires: python-six BuildRequires: python-osbs >= 0.15 @@ -61,12 +67,13 @@ BuildRequires: python2-responses BuildRequires: python-jsonschema BuildRequires: PyYAML BuildRequires: python-mock +BuildRequires: python2-docker-squash >= 1.0.0-0.3 %endif # with_check %if 0%{?with_python3} Requires: python3-atomic-reactor = %{version}-%{release} %else -Requires: python-atomic-reactor = %{version}-%{release} +Requires: python2-atomic-reactor = %{version}-%{release} %endif # with_python3 Requires: git >= 1.7.10 @@ -77,7 +84,7 @@ BuildRequires: python3-setuptools BuildRequires: python3-pytest BuildRequires: python3-pytest-capturelog BuildRequires: python3-dockerfile-parse >= 0.0.5 -BuildRequires: python3-docker-py +BuildRequires: python3-docker BuildRequires: python3-flexmock >= 0.10.2 BuildRequires: python3-six BuildRequires: python3-osbs >= 0.15 @@ -85,6 +92,7 @@ BuildRequires: python3-responses BuildRequires: python3-jsonschema BuildRequires: python3-PyYAML BuildRequires: python3-mock +BuildRequires: python3-docker-squash >= 1.0.0-0.3 %endif # with_check %endif # with_python3 @@ -100,14 +108,15 @@ infrastructure. %package -n python2-atomic-reactor %{?python_provide:%python_provide python2-atomic-reactor} +%{?python_provide:%python_provide python-atomic-reactor} Summary: Python 2 Atomic Reactor library Group: Development/Tools License: BSD -Requires: python-docker-py +Requires: python2-docker Requires: python-requests Requires: python-setuptools Requires: python-dockerfile-parse >= 0.0.5 -Requires: python-docker-squash >= 1.0.0-0.3 +Requires: python2-docker-squash >= 1.0.0-0.3 Requires: python-backports-lzma Requires: python-jsonschema # Due to CopyBuiltImageToNFSPlugin, might be moved to subpackage later. @@ -115,51 +124,53 @@ Requires: nfs-utils Requires: PyYAML Provides: python-dock = %{version}-%{release} Obsoletes: python-dock < %{dock_obsolete_vr} -%{?python_provide:%python_provide python-atomic-reactor} %description -n python2-atomic-reactor Simple Python 2 library for building Docker images. It contains a lot of helpful functions which you would probably implement if you started hooking Docker into your infrastructure. -%package -n python-atomic-reactor-koji +%package -n python2-atomic-reactor-koji +%{?python_provide:%python_provide python2-atomic-reactor-koji} +%{?python_provide:%python_provide python-atomic-reactor-koji} Summary: Koji plugin for Atomic Reactor Group: Development/Tools -Requires: python-atomic-reactor = %{version}-%{release} +Requires: python2-atomic-reactor = %{version}-%{release} Requires: koji Provides: dock-koji = %{version}-%{release} Provides: python-dock-koji = %{version}-%{release} Obsoletes: dock-koji < 1.2.0-3 Obsoletes: python-dock-koji < %{dock_obsolete_vr} -%{?python_provide:%python_provide python-atomic-reactor-koji} -%description -n python-atomic-reactor-koji +%description -n python2-atomic-reactor-koji Koji plugin for Atomic Reactor -%package -n python-atomic-reactor-metadata +%package -n python2-atomic-reactor-metadata +%{?python_provide:%python_provide python2-atomic-reactor-metadata} +%{?python_provide:%python_provide python-atomic-reactor-metadata} Summary: Plugin for submitting metadata to OSBS Group: Development/Tools -Requires: python-atomic-reactor = %{version}-%{release} +Requires: python2-atomic-reactor = %{version}-%{release} Requires: osbs Provides: dock-metadata = %{version}-%{release} Provides: python-dock-metadata = %{version}-%{release} Obsoletes: dock-metadata < 1.2.0-3 Obsoletes: python-dock-metadata < %{dock_obsolete_vr} -%{?python_provide:%python_provide python-atomic-reactor-metadata} -%description -n python-atomic-reactor-metadata +%description -n python2-atomic-reactor-metadata Plugin for submitting metadata to OSBS -%package -n python-atomic-reactor-rebuilds +%package -n python2-atomic-reactor-rebuilds +%{?python_provide:%python_provide python2-atomic-reactor-rebuilds} +%{?python_provide:%python_provide python-atomic-reactor-rebuilds} Summary: Plugins for automated rebuilds Group: Development/Tools -Requires: python-atomic-reactor = %{version}-%{release} +Requires: python2-atomic-reactor = %{version}-%{release} Requires: osbs >= 0.15 -%{?python_provide:%python_provide python-atomic-reactor-rebuilds} -%description -n python-atomic-reactor-rebuilds +%description -n python2-atomic-reactor-rebuilds Plugins for automated rebuilds @@ -168,7 +179,7 @@ Plugins for automated rebuilds Summary: Python 3 Atomic Reactor library Group: Development/Tools License: BSD -Requires: python3-docker-py +Requires: python3-docker Requires: python3-requests Requires: python3-setuptools Requires: python3-dockerfile-parse >= 0.0.5 @@ -227,6 +238,8 @@ Plugins for automated rebuilds %prep %setup -qn %{name}-%{commit} +%patch0 -p1 + %build %py2_build %if 0%{?with_python3} @@ -284,12 +297,14 @@ LANG=en_US.utf8 py.test-%{python2_version} -vv tests %{python2_sitelib}/atomic_reactor/schemas %exclude %{python2_sitelib}/atomic_reactor/koji_util.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/exit_koji_promote.py* +%exclude %{python2_sitelib}/atomic_reactor/plugins/exit_koji_import.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/exit_sendmail.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/exit_store_metadata_in_osv3.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/post_import_image.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/pre_add_filesystem.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/pre_bump_release.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/pre_koji.py* +%exclude %{python2_sitelib}/atomic_reactor/plugins/pre_koji_parent.py* %exclude %{python2_sitelib}/atomic_reactor/plugins/pre_stop_autorebuild_if_disabled.py* %exclude %{python2_sitelib}/integration-tests @@ -299,18 +314,20 @@ LANG=en_US.utf8 py.test-%{python2_version} -vv tests %{_datadir}/%{name}/images -%files -n python-atomic-reactor-koji +%files -n python2-atomic-reactor-koji %{python2_sitelib}/atomic_reactor/koji_util.py* %{python2_sitelib}/atomic_reactor/plugins/pre_add_filesystem.py* %{python2_sitelib}/atomic_reactor/plugins/pre_bump_release.py* %{python2_sitelib}/atomic_reactor/plugins/pre_koji.py* +%{python2_sitelib}/atomic_reactor/plugins/pre_koji_parent.py* %{python2_sitelib}/atomic_reactor/plugins/exit_koji_promote.py* +%{python2_sitelib}/atomic_reactor/plugins/exit_koji_import.py* -%files -n python-atomic-reactor-metadata +%files -n python2-atomic-reactor-metadata %{python2_sitelib}/atomic_reactor/plugins/exit_store_metadata_in_osv3.py* -%files -n python-atomic-reactor-rebuilds +%files -n python2-atomic-reactor-rebuilds %{python2_sitelib}/atomic_reactor/plugins/exit_sendmail.py* %{python2_sitelib}/atomic_reactor/plugins/post_import_image.py* %{python2_sitelib}/atomic_reactor/plugins/pre_stop_autorebuild_if_disabled.py* @@ -334,20 +351,26 @@ LANG=en_US.utf8 py.test-%{python2_version} -vv tests %{python3_sitelib}/atomic_reactor/__pycache__/*.py* %exclude %{python3_sitelib}/atomic_reactor/koji_util.py %exclude %{python3_sitelib}/atomic_reactor/plugins/exit_koji_promote.py +%exclude %{python3_sitelib}/atomic_reactor/plugins/exit_koji_import.py %exclude %{python3_sitelib}/atomic_reactor/plugins/exit_sendmail.py %exclude %{python3_sitelib}/atomic_reactor/plugins/exit_store_metadata_in_osv3.py %exclude %{python3_sitelib}/atomic_reactor/plugins/post_import_image.py %exclude %{python3_sitelib}/atomic_reactor/plugins/pre_add_filesystem.py %exclude %{python3_sitelib}/atomic_reactor/plugins/pre_bump_release.py +%exclude %{python3_sitelib}/atomic_reactor/plugins/pre_check_and_set_rebuild.py %exclude %{python3_sitelib}/atomic_reactor/plugins/pre_koji.py +%exclude %{python3_sitelib}/atomic_reactor/plugins/pre_koji_parent.py %exclude %{python3_sitelib}/atomic_reactor/plugins/pre_stop_autorebuild_if_disabled.py %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_koji_promote*.py* +%exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_koji_import*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_sendmail*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_store_metadata_in_osv3*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/post_import_image*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_bump_release*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_add_filesystem*.py* +%exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_check_and_set_rebuild*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_koji*.py* +%exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_koji_parent*.py* %exclude %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_stop_autorebuild_if_disabled*.py* %exclude %{python3_sitelib}/integration-tests @@ -367,11 +390,15 @@ LANG=en_US.utf8 py.test-%{python2_version} -vv tests %{python3_sitelib}/atomic_reactor/plugins/pre_add_filesystem.py %{python3_sitelib}/atomic_reactor/plugins/pre_bump_release.py %{python3_sitelib}/atomic_reactor/plugins/pre_koji.py +%{python3_sitelib}/atomic_reactor/plugins/pre_koji_parent.py %{python3_sitelib}/atomic_reactor/plugins/exit_koji_promote.py +%{python3_sitelib}/atomic_reactor/plugins/exit_koji_import.py %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_add_filesystem*.py* %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_bump_release*.py* %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_koji*.py* +%{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_koji_parent*.py* %{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_koji_promote*.py* +%{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_koji_import*.py* %files -n python3-atomic-reactor-metadata @@ -381,21 +408,23 @@ LANG=en_US.utf8 py.test-%{python2_version} -vv tests %files -n python3-atomic-reactor-rebuilds %{python3_sitelib}/atomic_reactor/plugins/exit_sendmail.py %{python3_sitelib}/atomic_reactor/plugins/post_import_image.py +%{python3_sitelib}/atomic_reactor/plugins/pre_check_and_set_rebuild.py %{python3_sitelib}/atomic_reactor/plugins/pre_stop_autorebuild_if_disabled.py %{python3_sitelib}/atomic_reactor/plugins/__pycache__/exit_sendmail*.py* %{python3_sitelib}/atomic_reactor/plugins/__pycache__/post_import_image*.py* +%{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_check_and_set_rebuild*.py* %{python3_sitelib}/atomic_reactor/plugins/__pycache__/pre_stop_autorebuild_if_disabled*.py* %endif # with_python3 %changelog +* Tue Aug 22 2017 Adam Miller - 1.6.25.1-1 +- Update to latest upstream + * Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek - 1.6.23.2-3 - Python 2 binary package renamed to python2-atomic-reactor See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 -* Wed Jul 26 2017 Fedora Release Engineering - 1.6.23.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - * Fri Jun 09 2017 Adam Miller - 1.6.23.2-1 - Update to latest upstream diff --git a/sources b/sources index 25b7244..797c4d1 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (atomic-reactor-e6fb7422e37dae88d436218c55e89faeb33fd41b.tar.gz) = 8c18c482a5be13ebaa15d429e54de866296ae8362ff941d9e71f8fbcb31e6e05575c8665c12bf62f00c58f84d66d38db492e50fdaeffd52844265dc81a8e7592 +SHA512 (atomic-reactor-71ff262252fa4d7937ccf47523f8ffdc55af6841.tar.gz) = 326cdedaf09d150dff80a4cf6994be8824d381808510279db2c6efdd49a87b607619e5789308487a655d255d8877a7acd9f3319372943a7150a3e3f321e46857