Spec URL: https://raw.githubusercontent.com/larsks-packages/python-shade/master/python-shade.spec SRPM URL: http://people.redhat.com/~lkellogg/srpms/python-shade-0.15.0-1.fc23.src.rpm Description: shade is a simple client library for operating OpenStack clouds. Shade is required by the OpenStack modules in Ansible 2.0. Fedora Account System Username: larsks
There is an installable build of this package available from https://copr.fedoraproject.org/coprs/larsks/python-shade/
Minor fixes: * we need conditionals so that we can rebuild the package on EL7 where there's no python3 (except EPEL70 %if 0%{?fedora} %global with_python3 %endif * defattr is not needed anymore * rather than defining a shell variable to retrieve python2 short version. %{!?python2_shortver: %global python2_shortver %(%{__python2} -c 'import sys; print(str(sys.version_info.major) + "." + str(sys.version_info.minor))')} * too large wildcards for stuff in site-packages directories, we need to distinguish at least different directories so they are not unowned. * could we ship python2 version of the command-line? Here's a sample, how we do it according guidelines http://mferminl.web.cern.ch/mferminl/fedorapkg/python-yaql/python-yaql.spec %{_bindir}/shade-inventory-3 %{_bindir}/shade-inventory-%{python3_shortver} %{_bindir}/shade-inventory-2 %{_bindir}/shade-inventory-%{python2_shortver} %{_bindir}/shade-inventory (depending if we're on Fedora or EL7 symlinks to either python2 or python3 version. Except the points above, the package installs, works and is sane.
Awesome! Super thrilled you're packaging this - let me know if there is anything you come across that I need up fix or update. My plans are to release a 1.0 when ansible 2.0 drops (since it'll be a 1.0 whether I like it or not, so I might as well call it one then.
Spec URL: https://raw.githubusercontent.com/larsks-packages/python-shade/master/python-shade.spec SRPM URL: http://people.redhat.com/~lkellogg/srpms/python-shade-0.15.0-2.fc23.src.rpm Description: shade is a simple client library for operating OpenStack clouds. Shade is required by the OpenStack modules in Ansible 2.0. This resolves all the comments in #2. Fedora Account System Username: larsks
Haïkel: I've updated the spec in a way that hopefully addresses your comments. Thanks!
s/0.15.0-[12]/0.15.0-3/ $ rpmlint python-shade-0.15.0-2.fc23.src.rpm python-shade.src: W: invalid-license Apache (use ASL 2.0) python-shade.src:104: W: macro-in-comment %check (use #%%check) python-shade.src:27: W: mixed-use-of-spaces-and-tabs (line 27) $ rpmlint python2-shade-0.15.0-2.fc23.noarch.rpm python2-shade.noarch: E: non-executable-script shade/cmd/inventory.py python2-shade.noarch: E: script-without-shebang hooks/post_test_hook.sh python2-shade.noarch: E: non-executable-script shade/task_manager.py The unversioned shade-inventory command is only available with the python3 package and won't be installed normally on Fedora for example. Is that expected?
@Pádraig: according new guidelines, F22 onwards, python packages providing commands should prefer the python3 variant as default https://fedoraproject.org/wiki/Packaging:Python#Executables_in_.2Fusr.2Fbin btw, I noticed that python-bunch has no python3-bunch subpackage, and after discussing with maintainer (Fedora Infra), it looks like that bunch has dead upstream and they suggested me to switch to Munch a compatible fork. I already submitted a review upstream to fix it. https://review.openstack.org/#/c/237073/ As we can't install python3-shade (hence the unversioned shade-inventory command), I suggest that we apply this patch downstream and switch to python-munch.
social's scratch build of openstack-puppet-modules?#8564064dd63e71ab2156e7b49e0ab0305ad76da5 for git://pkgs.fedoraproject.org/openstack-puppet-modules?#8564064dd63e71ab2156e7b49e0ab0305ad76da5 and rawhide completed http://koji.fedoraproject.org/koji/taskinfo?taskID=11513243
We have merged the migration to munch upstream and will be releasing shade 1.0 containing it today or tomorrow.
1.0.0 has been released
Spec URL: https://raw.githubusercontent.com/larsks-packages/python-shade/master/python-shade.spec SRPM URL: https://copr-be.cloud.fedoraproject.org/results/larsks/python-shade/fedora-rawhide-x86_64/00130978-python-shade/python-shade-1.0.0-2.fc24.src.rpm Description: shade is a simple client library for operating OpenStack clouds. Shade is required by the OpenStack modules in Ansible 2.0. Fedora Account System Username: larsks This is a build of 1.0.0 in all its munchy glory.
Thanks for starting this!
So, was able to download the spec file and mockbuild and lint without any issues. As far as I can tell, the spec file itself looks good, but I'm not 100% to review policies. It would be great is we can get this landed on pkgdb and start rolling builds for fedora and epel7
One of the issue is that python3-shade requires python3 OpenStack clients which are not packaged (we're still fixing python3 oslo builds) So I suggest to disable python3 build until we fix clients? Is that ok?
I figure %global with_python3 0 will be the fix for the moment.
Ack, considering you do the change before import time, I hereby approve this package. Please continue w/ SCM request, please note that process that has changed and you should do through pkgdb. https://fedoraproject.org/wiki/PackageDB_admin_requests Package Review ============== Legend: [x] = Pass, [!] = Fail, [-] = Not applicable, [?] = Not evaluated [ ] = Manual review needed Issues: ======= - Package installs properly. Note: Installation errors (see attachment) See: https://fedoraproject.org/wiki/Packaging:Guidelines ===== MUST items ===== Generic: [x]: Package is licensed with an open-source compatible license and meets other legal requirements as defined in the legal section of Packaging Guidelines. [x]: License field in the package spec file matches the actual license. Note: Checking patched sources after %prep for licenses. Licenses found: "Apache (v2.0)", "Unknown or generated", "*No copyright* Apache (v2.0)". 45 files have unknown license. Detailed output of licensecheck in /home/haikel/1271768-python-shade/licensecheck.txt [x]: License file installed when any subpackage combination is installed. [x]: Package requires other packages for directories it uses. Note: No known owner of /usr/lib/python3.5/site-packages, /usr/lib/python3.5 [x]: Package must own all directories that it creates. Note: Directories without known owners: /usr/lib/python3.5/site- packages, /usr/lib/python3.5 [x]: Package contains no bundled libraries without FPC exception. [x]: Changelog in prescribed format. [x]: Sources contain only permissible code or content. [-]: Package contains desktop file if it is a GUI application. [-]: Development files must be in a -devel package [x]: Package uses nothing in %doc for runtime. [x]: Package consistently uses macros (instead of hard-coded directory names). [x]: Package is named according to the Package Naming Guidelines. [x]: Package does not generate any conflict. [x]: Package obeys FHS, except libexecdir and /usr/target. [x]: If the package is a rename of another package, proper Obsoletes and Provides are present. [x]: Requires correct, justified where necessary. [x]: Spec file is legible and written in American English. [-]: Package contains systemd file(s) if in need. [x]: Package is not known to require an ExcludeArch tag. [-]: Large documentation must go in a -doc subpackage. Large could be size (~1MB) or number of files. Note: Documentation size is 20480 bytes in 4 files. [x]: Package complies to the Packaging Guidelines [x]: Package successfully compiles and builds into binary rpms on at least one supported primary architecture. [x]: Rpmlint is run on all rpms the build produces. Note: There are rpmlint messages (see attachment). [x]: If (and only if) the source package includes the text of the license(s) in its own file, then that file, containing the text of the license(s) for the package is included in %license. [x]: Package does not own files or directories owned by other packages. [x]: All build dependencies are listed in BuildRequires, except for any that are listed in the exceptions section of Packaging Guidelines. [x]: Package uses either %{buildroot} or $RPM_BUILD_ROOT [x]: Package does not run rm -rf %{buildroot} (or $RPM_BUILD_ROOT) at the beginning of %install. [x]: Macros in Summary, %description expandable at SRPM build time. [x]: Dist tag is present. [x]: Package does not contain duplicates in %files. [x]: Permissions on files are set properly. [x]: Package use %makeinstall only when make install DESTDIR=... doesn't work. [x]: Package is named using only allowed ASCII characters. [x]: Package does not use a name that already exists. [x]: Package is not relocatable. [x]: Sources used to build the package match the upstream source, as provided in the spec URL. [x]: Spec file name must match the spec package %{name}, in the format %{name}.spec. [x]: File names are valid UTF-8. [x]: Packages must not store files under /srv, /opt or /usr/local Python: [x]: Python eggs must not download any dependencies during the build process. [x]: A package which is used by another package via an egg interface should provide egg info. [x]: Package meets the Packaging Guidelines::Python [x]: Package contains BR: python2-devel or python3-devel [x]: Binary eggs must be removed in %prep ===== SHOULD items ===== Generic: [-]: If the source package does not include license text(s) as a separate file from upstream, the packager SHOULD query upstream to include it. [x]: Final provides and requires are sane (see attachments). [-]: Fully versioned dependency in subpackages if applicable. Note: No Requires: %{name}%{?_isa} = %{version}-%{release} in python2-shade , python3-shade [x]: Package functions as described. [x]: Latest version is packaged. [x]: Package does not include license text files separate from upstream. [-]: Description and summary sections in the package spec file contains translations for supported Non-English languages, if available. [x]: Package should compile and build into binary rpms on all supported architectures. [-]: %check is present and all tests pass. [x]: Packages should try to preserve timestamps of original installed files. [x]: Packager, Vendor, PreReq, Copyright tags should not be in spec file [x]: Sources can be downloaded from URI in Source: tag [x]: Reviewer should test that the package builds in mock. [x]: Buildroot is not present [x]: Package has no %clean section with rm -rf %{buildroot} (or $RPM_BUILD_ROOT) [x]: No file requires outside of /etc, /bin, /sbin, /usr/bin, /usr/sbin. [x]: SourceX is a working URL. [x]: Spec use %global instead of %define unless justified. ===== EXTRA items ===== Generic: [!]: Rpmlint is run on all installed packages. Note: Mock build failed See: http://fedoraproject.org/wiki/Packaging/Guidelines#rpmlint [x]: Spec file according to URL is the same as in SRPM. Installation errors ------------------- INFO: mock.py version 1.2.13 starting (python version = 3.4.3)... Start: init plugins INFO: selinux enabled Finish: init plugins Start: run Start: chroot init INFO: calling preinit hooks INFO: enabled root cache INFO: enabled dnf cache Start: cleaning dnf metadata Finish: cleaning dnf metadata INFO: enabled ccache Mock Version: 1.2.13 INFO: Mock Version: 1.2.13 Finish: chroot init INFO: installing package(s): /home/haikel/1271768-python-shade/results/python2-shade-1.0.0-2.fc24.noarch.rpm /home/haikel/1271768-python-shade/results/python3-shade-1.0.0-2.fc24.noarch.rpm ERROR: Command failed. See logs for output. # /usr/bin/dnf --installroot /var/lib/mock/fedora-rawhide-x86_64/root/ --releasever 24 install /home/haikel/1271768-python-shade/results/python2-shade-1.0.0-2.fc24.noarch.rpm /home/haikel/1271768-python-shade/results/python3-shade-1.0.0-2.fc24.noarch.rpm --setopt=tsflags=nocontexts Rpmlint ------- Checking: python2-shade-1.0.0-2.fc24.noarch.rpm python3-shade-1.0.0-2.fc24.noarch.rpm python-shade-1.0.0-2.fc24.src.rpm python2-shade.noarch: E: script-without-shebang /usr/lib/python2.7/site-packages/shade/tests/functional/hooks/post_test_hook.sh python2-shade.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/shade/task_manager.py 644 /usr/bin/env python2-shade.noarch: E: non-executable-script /usr/lib/python2.7/site-packages/shade/cmd/inventory.py 644 /usr/bin/env python2-shade.noarch: W: no-manual-page-for-binary shade-inventory-2.7 python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_object.cpython-35.opt-1.pyc python3-shade.noarch: E: non-executable-script /usr/lib/python3.5/site-packages/shade/cmd/inventory.py 644 /usr/bin/env python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_task_manager.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_floating_ip_neutron.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_floating_ip_nova.cpython-35.opt-1.pyc python3-shade.noarch: E: non-executable-script /usr/lib/python3.5/site-packages/shade/task_manager.py 644 /usr/bin/env python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_services.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_port.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/task_manager.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_domains.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_flavor.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_keypair.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/meta.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/base.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_caching.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/util.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_endpoints.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/_log.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_identity_roles.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/inventory.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_users.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_inventory.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/__init__.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_delete_server.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/__init__.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_shade_operator.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test__utils.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/__pycache__/fakes.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_floating_ip_common.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_operator_noauth.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_create_server.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_router.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_image.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/__pycache__/base.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/cmd/__pycache__/inventory.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_compute.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_object.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_shade.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/_tasks.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_flavors.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_identity.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/__init__.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/exc.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_endpoints.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_floating_ip.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/__pycache__/__init__.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_rebuild_server.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/cmd/__pycache__/__init__.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_meta.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_network.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_domain_params.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/__pycache__/_utils.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_port.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_services.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/functional/__pycache__/test_floating_ip_pool.cpython-35.opt-1.pyc python3-shade.noarch: E: script-without-shebang /usr/lib/python3.5/site-packages/shade/tests/functional/hooks/post_test_hook.sh python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_security_groups.cpython-35.opt-1.pyc python3-shade.noarch: W: python-bytecode-without-source /usr/lib/python3.5/site-packages/shade/tests/unit/__pycache__/test_floating_ip_pool.cpython-35.opt-1.pyc python3-shade.noarch: W: no-manual-page-for-binary shade-inventory-3.5 python3-shade.noarch: W: no-manual-page-for-binary shade-inventory 3 packages and 0 specfiles checked; 6 errors, 58 warnings. Requires -------- python2-shade (rpmlib, GLIBC filtered): /usr/bin/python2 python(abi) python-cinderclient python-decorator python-designateclient python-dogpile-cache python-glanceclient python-ironicclient python-jsonpatch python-keystoneauth1 python-keystoneclient python-munch python-neutronclient python-novaclient python-os-client-config python-six python-swiftclient python-troveclient python3-shade (rpmlib, GLIBC filtered): /usr/bin/python3 python(abi) python3-cinderclient python3-decorator python3-designateclient python3-dogpile-cache python3-glanceclient python3-ironicclient python3-jsonpatch python3-keystoneauth1 python3-keystoneclient python3-munch python3-neutronclient python3-novaclient python3-os-client-config python3-six python3-swiftclient python3-troveclient Provides -------- python2-shade: python2-shade python3-shade: python3-shade Source checksums ---------------- https://pypi.python.org/packages/source/s/shade/shade-1.0.0.tar.gz : CHECKSUM(SHA256) this package : 40403c7be65971581027b248e504f3ba8a2e250f03b9f315d87a8eeb402429ab CHECKSUM(SHA256) upstream package : 40403c7be65971581027b248e504f3ba8a2e250f03b9f315d87a8eeb402429ab Generated by fedora-review 0.6.0 (3c5c9d7) last change: 2015-05-20 Command line :/usr/bin/fedora-review -b 1271768 -m fedora-rawhide-x86_64 Buildroot used: fedora-rawhide-x86_64 Active plugins: Python, Generic, Shell-api Disabled plugins: Java, C/C++, fonts, SugarActivity, Ocaml, Perl, Haskell, R, PHP, Ruby Disabled flags: EXARCH, DISTTAG, EPEL5, BATCH, EPEL6
Package request has been approved: https://admin.fedoraproject.org/pkgdb/package/python-shade
*** Bug 1440120 has been marked as a duplicate of this bug. ***