# Sphinx-generated HTML documentation is not suitable for packaging; see # https://bugzilla.redhat.com/show_bug.cgi?id=2006555 for discussion. # # We can generate PDF documentation as a lesser substitute. %bcond_without doc_pdf Name: python-hdfs Version: 2.6.0 Release: 7%{?dist} Summary: API and command line interface for HDFS License: MIT URL: https://github.com/mtth/hdfs Source0: %{url}/archive/%{version}/hdfs-%{version}.tar.gz # Downstream man pages in groff_man(7) format. These were written for Fedora # based on the tools’ --help output and should be updated if the command-line # interface changes. Source1: hdfscli.1 Source2: hdfscli-avro.1 # Use unittest.mock where available # https://github.com/mtth/hdfs/pull/177 Patch0: https://github.com/mtth/hdfs/pull/177.patch # imp has been removed from Python3.12, use importlib # https://github.com/mtth/hdfs/issues/191 # NOTE: The referenced PR suggests `from importlib import load_source` # But that fails! Use `from importlib import import_module` instead. Patch1: imp_deprecation.patch # The base package is arched because extras metapackages requiring fastavro are # not available on 32-bit architectures # (https://bugzilla.redhat.com/show_bug.cgi?id=1943932). %ifnarch %{arm32} %{ix86} %global fastavro_arch 1 %endif # Of the binary RPMs, only the conditionally-enabled extras metapackages # python3-hdfs+avro and python3-hdfs+dataframe are arched. # # Since there is no compiled code, there are no debugging symbols. %global debug_package %{nil} BuildRequires: python3-devel # Extra dependencies for documentation %if %{with doc_pdf} BuildRequires: make BuildRequires: %{py3_dist sphinx} BuildRequires: python3-sphinx-latex BuildRequires: latexmk %endif %global _description %{expand: %{summary}. Features: • Python bindings for the WebHDFS (and HttpFS) API, supporting both secure and insecure clusters. • Command line interface to transfer files and start an interactive client shell, with aliases for convenient namenode URL caching. • Additional functionality through optional extensions: ○ avro, to read and write Avro files directly from HDFS. ○ dataframe, to load and save Pandas dataframes. ○ kerberos, to support Kerberos authenticated clusters.} %description %{_description} %package -n python3-hdfs Summary: %{summary} BuildArch: noarch %description -n python3-hdfs %{_description} %package doc Summary: Documentation and examples for %{name} BuildArch: noarch %description doc %{_description} %prep %autosetup -n hdfs-%{version} -p1 # Remove shebangs from non-script sources. The find-then-modify pattern keeps # us from discarding mtimes on sources that do not need modification. find . -type f ! -perm /0111 \ -exec gawk '/^#!/ { print FILENAME }; { nextfile }' '{}' '+' | xargs -r -t sed -r -i '1{/^#!/d}' cp -p '%{SOURCE1}' %{?fastavro_arch:'%{SOURCE2}'} . %generate_buildrequires %pyproject_buildrequires -x kerberos%{?fastavro_arch:,avro,dataframe} # We manually write out the python3-hdfs+kerberos metapackage so that it (like # python3-hdfs) can be noarch even though the base package is arched. The # definition is based on: # # rpm -E '%%pyproject_extras_subpkg -n python3-hdfs kerberos %package -n python3-hdfs+kerberos Summary: Metapackage for python3-hdfs: kerberos extras BuildArch: noarch Requires: python3-hdfs = %{version}-%{release} %description -n python3-hdfs+kerberos This is a metapackage bringing in kerberos extras requires for python3-hdfs. It makes sure the dependencies are installed. %files -n python3-hdfs+kerberos %ghost %{python3_sitelib}/*.dist-info %if 0%{?fastavro_arch} # Note that this subpackage is arched because it is not available on 32-bit # architectures. # # We manually write out the python3-hdfs+avro subpackage so that it can contain # the hdfscli-avro CLI entry point, and so that its summary and description can # be tweaked to reflect this. The definition is based on: # # rpm -E '%%pyproject_extras_subpkg -n python3-hdfs avro %package -n python3-hdfs+avro Summary: Package for python3-hdfs: avro extras Requires: python3-hdfs = %{version}-%{release} %description -n python3-hdfs+avro This is a package bringing in avro extras requires for python3-hdfs. It makes sure the dependencies are installed. It also includes the avro-specific command-line tool, hdfscli-avro. %files -n python3-hdfs+avro %ghost %{python3_sitelib}/*.dist-info %{_bindir}/hdfscli-avro %{_mandir}/man1/hdfscli-avro.1* # Note that this metapackage is arched because it is not available on 32-bit # architectures. %pyproject_extras_subpkg -n python3-hdfs dataframe %endif %build %pyproject_wheel %if %{with doc_pdf} PYTHONPATH="${PWD}" sphinx-build -b latex doc _latex %{?_smp_mflags} %make_build -C _latex %endif %install %pyproject_install %pyproject_save_files hdfs install -t '%{buildroot}%{_mandir}/man1' -D -p -m 0644 \ hdfscli.1 %{?fastavro_arch:hdfscli-avro.1} %check # Ignore upstream tests - require a hadoop cluster setup # https://github.com/mtth/hdfs/blob/master/.travis.yml#L10 %{pyproject_check_import \ %{?!fastavro_arch:-e hdfs.ext.avro -e hdfs.ext.dataframe}} %files -n python3-hdfs -f %{pyproject_files} # pyproject-rpm-macros handles the license file; verify with rpm -qL -p … %{_bindir}/hdfscli %{_mandir}/man1/hdfscli.1* # This is packaged in python3-hdfs+avro on 64-bit architectures; it is not # packaged at all on 32-bit architectures. %exclude %{_bindir}/hdfscli-avro %files doc %license LICENSE %doc AUTHORS %doc CHANGES %doc README.md %if %{with doc_pdf} %doc _latex/hdfs.pdf %endif %doc examples %changelog * Fri Jul 21 2023 Fedora Release Engineering - 2.6.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Wed Jun 14 2023 Python Maint - 2.6.0-6 - Rebuilt for Python 3.12 * Fri Jan 20 2023 Fedora Release Engineering - 2.6.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Fri Jul 22 2022 Fedora Release Engineering - 2.6.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Tue Jun 14 2022 Python Maint - 2.6.0-3 - Rebuilt for Python 3.11 * Fri Jan 21 2022 Fedora Release Engineering - 2.6.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Mon Nov 08 2021 Benjamin A. Beasley - 2.6.0-1 - Update to 2.6.0 (close RHBZ#2020978) * Fri Oct 29 2021 Benjamin A. Beasley - 2.5.8-12 - Use the new %%pyproject_check_import macro * Wed Oct 27 2021 Benjamin A. Beasley - 2.5.8-11 - Fix a typo in a comment in the spec file * Sun Oct 10 2021 Benjamin A. Beasley - 2.5.8-10 - Fully modernize the packaging - Switch to “new guidelines” / pyproject-rpm-macros - Drop conditionals for Python 2 on obsolete Fedora releases - Rely on Python dependency generator (no manual Requires) - Build PDF instead of HTML documentation due to guideline issues - Drop dependencies on deprecated nose and mock - Properly handle extras metapackages and dependency on unported python-fastavro for 32-bit architectures; move the hdfscli-avro entry point into the new python3-hdfs+avro package - Add man pages for command-line tools * Fri Jul 23 2021 Fedora Release Engineering - 2.5.8-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Fri Jun 04 2021 Python Maint - 2.5.8-8 - Rebuilt for Python 3.10 * Wed Jan 27 2021 Fedora Release Engineering - 2.5.8-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Wed Jul 29 2020 Fedora Release Engineering - 2.5.8-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Tue May 26 2020 Miro Hrončok - 2.5.8-5 - Rebuilt for Python 3.9 * Thu Jan 30 2020 Fedora Release Engineering - 2.5.8-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Thu Oct 03 2019 Miro Hrončok - 2.5.8-3 - Rebuilt for Python 3.8.0rc1 (#1748018) * Mon Aug 19 2019 Miro Hrončok - 2.5.8-2 - Rebuilt for Python 3.8 * Thu Aug 01 2019 Ankur Sinha - 2.5.8-1 - Update to new version * Fri Jul 26 2019 Fedora Release Engineering - 2.5.6-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild * Wed Jun 19 2019 Luis Bazan - 2.5.6-1 - New upstream version * Wed Jun 12 2019 Luis Bazan - 2.5.4-1 - New upstream version * Mon May 27 2019 Luis Bazan - 2.5.2-2 - Add buildrequire - Fix readme extension * Mon May 27 2019 Luis Bazan - 2.5.2-1 - New upstream version * Sat Feb 02 2019 Fedora Release Engineering - 2.1.0-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild * Thu Nov 08 2018 Ankur Sinha - 2.1.0-7 - Disable py2 on F30+ - Use py3 sphinx for document generation * Sat Jul 14 2018 Fedora Release Engineering - 2.1.0-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild * Tue Jun 19 2018 Miro Hrončok - 2.1.0-5 - Rebuilt for Python 3.7 * Tue Jun 19 2018 Miro Hrončok - 2.1.0-4 - Rebuilt for Python 3.7 * Fri Feb 09 2018 Fedora Release Engineering - 2.1.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild * Tue Jan 23 2018 Ankur Sinha - 2.1.0-2 - Fix doc generation - Fix summary macro - List binary files * Mon Jan 15 2018 Ankur Sinha - 0.1.0-1 - Initial build